﻿// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT License.
// See the LICENSE file in the project root for more information.

//
// Revision history:
//
//   BD - 04/16/2016 - Created fast JSON serializer functionality.
//

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Nuqleon.Json.Serialization;
using System;
using System.Numerics;

namespace Tests
{
    partial class SerializerTests
    {
        [TestMethod]
        public void FastSerializer_SByte()
        {
            AssertSerialize(new Asserts<SByte>
            {
                { (SByte)SByte.MinValue, SByte.MinValue.ToString() },
                { (SByte)SByte.MaxValue, SByte.MaxValue.ToString() },
                { (SByte)(SByte.MinValue + 1), ((SByte)(SByte.MinValue + 1)).ToString() },
                { (SByte)(SByte.MaxValue - 1), ((SByte)(SByte.MaxValue - 1)).ToString() },
                { (SByte)(-128), "-128" },
                { (SByte)(-127), "-127" },
                { (SByte)(-126), "-126" },
                { (SByte)(-125), "-125" },
                { (SByte)(-124), "-124" },
                { (SByte)(-123), "-123" },
                { (SByte)(-122), "-122" },
                { (SByte)(-121), "-121" },
                { (SByte)(-120), "-120" },
                { (SByte)(-119), "-119" },
                { (SByte)(-118), "-118" },
                { (SByte)(-117), "-117" },
                { (SByte)(-116), "-116" },
                { (SByte)(-115), "-115" },
                { (SByte)(-114), "-114" },
                { (SByte)(-113), "-113" },
                { (SByte)(-112), "-112" },
                { (SByte)(-111), "-111" },
                { (SByte)(-110), "-110" },
                { (SByte)(-109), "-109" },
                { (SByte)(-108), "-108" },
                { (SByte)(-107), "-107" },
                { (SByte)(-106), "-106" },
                { (SByte)(-105), "-105" },
                { (SByte)(-104), "-104" },
                { (SByte)(-103), "-103" },
                { (SByte)(-102), "-102" },
                { (SByte)(-101), "-101" },
                { (SByte)(-100), "-100" },
                { (SByte)(-99), "-99" },
                { (SByte)(-98), "-98" },
                { (SByte)(-97), "-97" },
                { (SByte)(-96), "-96" },
                { (SByte)(-95), "-95" },
                { (SByte)(-94), "-94" },
                { (SByte)(-93), "-93" },
                { (SByte)(-92), "-92" },
                { (SByte)(-91), "-91" },
                { (SByte)(-90), "-90" },
                { (SByte)(-89), "-89" },
                { (SByte)(-88), "-88" },
                { (SByte)(-87), "-87" },
                { (SByte)(-86), "-86" },
                { (SByte)(-85), "-85" },
                { (SByte)(-84), "-84" },
                { (SByte)(-83), "-83" },
                { (SByte)(-82), "-82" },
                { (SByte)(-81), "-81" },
                { (SByte)(-80), "-80" },
                { (SByte)(-79), "-79" },
                { (SByte)(-78), "-78" },
                { (SByte)(-77), "-77" },
                { (SByte)(-76), "-76" },
                { (SByte)(-75), "-75" },
                { (SByte)(-74), "-74" },
                { (SByte)(-73), "-73" },
                { (SByte)(-72), "-72" },
                { (SByte)(-71), "-71" },
                { (SByte)(-70), "-70" },
                { (SByte)(-69), "-69" },
                { (SByte)(-68), "-68" },
                { (SByte)(-67), "-67" },
                { (SByte)(-66), "-66" },
                { (SByte)(-65), "-65" },
                { (SByte)(-64), "-64" },
                { (SByte)(-63), "-63" },
                { (SByte)(-62), "-62" },
                { (SByte)(-61), "-61" },
                { (SByte)(-60), "-60" },
                { (SByte)(-59), "-59" },
                { (SByte)(-58), "-58" },
                { (SByte)(-57), "-57" },
                { (SByte)(-56), "-56" },
                { (SByte)(-55), "-55" },
                { (SByte)(-54), "-54" },
                { (SByte)(-53), "-53" },
                { (SByte)(-52), "-52" },
                { (SByte)(-51), "-51" },
                { (SByte)(-50), "-50" },
                { (SByte)(-49), "-49" },
                { (SByte)(-48), "-48" },
                { (SByte)(-47), "-47" },
                { (SByte)(-46), "-46" },
                { (SByte)(-45), "-45" },
                { (SByte)(-44), "-44" },
                { (SByte)(-43), "-43" },
                { (SByte)(-42), "-42" },
                { (SByte)(-41), "-41" },
                { (SByte)(-40), "-40" },
                { (SByte)(-39), "-39" },
                { (SByte)(-38), "-38" },
                { (SByte)(-37), "-37" },
                { (SByte)(-36), "-36" },
                { (SByte)(-35), "-35" },
                { (SByte)(-34), "-34" },
                { (SByte)(-33), "-33" },
                { (SByte)(-32), "-32" },
                { (SByte)(-31), "-31" },
                { (SByte)(-30), "-30" },
                { (SByte)(-29), "-29" },
                { (SByte)(-28), "-28" },
                { (SByte)(-27), "-27" },
                { (SByte)(-26), "-26" },
                { (SByte)(-25), "-25" },
                { (SByte)(-24), "-24" },
                { (SByte)(-23), "-23" },
                { (SByte)(-22), "-22" },
                { (SByte)(-21), "-21" },
                { (SByte)(-20), "-20" },
                { (SByte)(-19), "-19" },
                { (SByte)(-18), "-18" },
                { (SByte)(-17), "-17" },
                { (SByte)(-16), "-16" },
                { (SByte)(-15), "-15" },
                { (SByte)(-14), "-14" },
                { (SByte)(-13), "-13" },
                { (SByte)(-12), "-12" },
                { (SByte)(-11), "-11" },
                { (SByte)(-10), "-10" },
                { (SByte)(-9), "-9" },
                { (SByte)(-8), "-8" },
                { (SByte)(-7), "-7" },
                { (SByte)(-6), "-6" },
                { (SByte)(-5), "-5" },
                { (SByte)(-4), "-4" },
                { (SByte)(-3), "-3" },
                { (SByte)(-2), "-2" },
                { (SByte)(-1), "-1" },
                { (SByte)(0), "0" },
                { (SByte)(1), "1" },
                { (SByte)(2), "2" },
                { (SByte)(3), "3" },
                { (SByte)(4), "4" },
                { (SByte)(5), "5" },
                { (SByte)(6), "6" },
                { (SByte)(7), "7" },
                { (SByte)(8), "8" },
                { (SByte)(9), "9" },
                { (SByte)(10), "10" },
                { (SByte)(11), "11" },
                { (SByte)(12), "12" },
                { (SByte)(13), "13" },
                { (SByte)(14), "14" },
                { (SByte)(15), "15" },
                { (SByte)(16), "16" },
                { (SByte)(17), "17" },
                { (SByte)(18), "18" },
                { (SByte)(19), "19" },
                { (SByte)(20), "20" },
                { (SByte)(21), "21" },
                { (SByte)(22), "22" },
                { (SByte)(23), "23" },
                { (SByte)(24), "24" },
                { (SByte)(25), "25" },
                { (SByte)(26), "26" },
                { (SByte)(27), "27" },
                { (SByte)(28), "28" },
                { (SByte)(29), "29" },
                { (SByte)(30), "30" },
                { (SByte)(31), "31" },
                { (SByte)(32), "32" },
                { (SByte)(33), "33" },
                { (SByte)(34), "34" },
                { (SByte)(35), "35" },
                { (SByte)(36), "36" },
                { (SByte)(37), "37" },
                { (SByte)(38), "38" },
                { (SByte)(39), "39" },
                { (SByte)(40), "40" },
                { (SByte)(41), "41" },
                { (SByte)(42), "42" },
                { (SByte)(43), "43" },
                { (SByte)(44), "44" },
                { (SByte)(45), "45" },
                { (SByte)(46), "46" },
                { (SByte)(47), "47" },
                { (SByte)(48), "48" },
                { (SByte)(49), "49" },
                { (SByte)(50), "50" },
                { (SByte)(51), "51" },
                { (SByte)(52), "52" },
                { (SByte)(53), "53" },
                { (SByte)(54), "54" },
                { (SByte)(55), "55" },
                { (SByte)(56), "56" },
                { (SByte)(57), "57" },
                { (SByte)(58), "58" },
                { (SByte)(59), "59" },
                { (SByte)(60), "60" },
                { (SByte)(61), "61" },
                { (SByte)(62), "62" },
                { (SByte)(63), "63" },
                { (SByte)(64), "64" },
                { (SByte)(65), "65" },
                { (SByte)(66), "66" },
                { (SByte)(67), "67" },
                { (SByte)(68), "68" },
                { (SByte)(69), "69" },
                { (SByte)(70), "70" },
                { (SByte)(71), "71" },
                { (SByte)(72), "72" },
                { (SByte)(73), "73" },
                { (SByte)(74), "74" },
                { (SByte)(75), "75" },
                { (SByte)(76), "76" },
                { (SByte)(77), "77" },
                { (SByte)(78), "78" },
                { (SByte)(79), "79" },
                { (SByte)(80), "80" },
                { (SByte)(81), "81" },
                { (SByte)(82), "82" },
                { (SByte)(83), "83" },
                { (SByte)(84), "84" },
                { (SByte)(85), "85" },
                { (SByte)(86), "86" },
                { (SByte)(87), "87" },
                { (SByte)(88), "88" },
                { (SByte)(89), "89" },
                { (SByte)(90), "90" },
                { (SByte)(91), "91" },
                { (SByte)(92), "92" },
                { (SByte)(93), "93" },
                { (SByte)(94), "94" },
                { (SByte)(95), "95" },
                { (SByte)(96), "96" },
                { (SByte)(97), "97" },
                { (SByte)(98), "98" },
                { (SByte)(99), "99" },
                { (SByte)(100), "100" },
                { (SByte)(101), "101" },
                { (SByte)(102), "102" },
                { (SByte)(103), "103" },
                { (SByte)(104), "104" },
                { (SByte)(105), "105" },
                { (SByte)(106), "106" },
                { (SByte)(107), "107" },
                { (SByte)(108), "108" },
                { (SByte)(109), "109" },
                { (SByte)(110), "110" },
                { (SByte)(111), "111" },
                { (SByte)(112), "112" },
                { (SByte)(113), "113" },
                { (SByte)(114), "114" },
                { (SByte)(115), "115" },
                { (SByte)(116), "116" },
                { (SByte)(117), "117" },
                { (SByte)(118), "118" },
                { (SByte)(119), "119" },
                { (SByte)(120), "120" },
                { (SByte)(121), "121" },
                { (SByte)(122), "122" },
                { (SByte)(123), "123" },
                { (SByte)(124), "124" },
                { (SByte)(125), "125" },
                { (SByte)(126), "126" },
                { (SByte)(127), "127" },
            });
        }

        [TestMethod]
        public void FastSerializer_NullableSByte()
        {
            AssertSerialize(new Asserts<SByte?>
            {
                { (SByte?)null, "null" },
                { (SByte?)SByte.MinValue, SByte.MinValue.ToString() },
                { (SByte?)SByte.MaxValue, SByte.MaxValue.ToString() },
                { (SByte?)(SByte.MinValue + 1), ((SByte)(SByte.MinValue + 1)).ToString() },
                { (SByte?)(SByte.MaxValue - 1), ((SByte)(SByte.MaxValue - 1)).ToString() },
                { (SByte?)(-128), "-128" },
                { (SByte?)(-127), "-127" },
                { (SByte?)(-126), "-126" },
                { (SByte?)(-125), "-125" },
                { (SByte?)(-124), "-124" },
                { (SByte?)(-123), "-123" },
                { (SByte?)(-122), "-122" },
                { (SByte?)(-121), "-121" },
                { (SByte?)(-120), "-120" },
                { (SByte?)(-119), "-119" },
                { (SByte?)(-118), "-118" },
                { (SByte?)(-117), "-117" },
                { (SByte?)(-116), "-116" },
                { (SByte?)(-115), "-115" },
                { (SByte?)(-114), "-114" },
                { (SByte?)(-113), "-113" },
                { (SByte?)(-112), "-112" },
                { (SByte?)(-111), "-111" },
                { (SByte?)(-110), "-110" },
                { (SByte?)(-109), "-109" },
                { (SByte?)(-108), "-108" },
                { (SByte?)(-107), "-107" },
                { (SByte?)(-106), "-106" },
                { (SByte?)(-105), "-105" },
                { (SByte?)(-104), "-104" },
                { (SByte?)(-103), "-103" },
                { (SByte?)(-102), "-102" },
                { (SByte?)(-101), "-101" },
                { (SByte?)(-100), "-100" },
                { (SByte?)(-99), "-99" },
                { (SByte?)(-98), "-98" },
                { (SByte?)(-97), "-97" },
                { (SByte?)(-96), "-96" },
                { (SByte?)(-95), "-95" },
                { (SByte?)(-94), "-94" },
                { (SByte?)(-93), "-93" },
                { (SByte?)(-92), "-92" },
                { (SByte?)(-91), "-91" },
                { (SByte?)(-90), "-90" },
                { (SByte?)(-89), "-89" },
                { (SByte?)(-88), "-88" },
                { (SByte?)(-87), "-87" },
                { (SByte?)(-86), "-86" },
                { (SByte?)(-85), "-85" },
                { (SByte?)(-84), "-84" },
                { (SByte?)(-83), "-83" },
                { (SByte?)(-82), "-82" },
                { (SByte?)(-81), "-81" },
                { (SByte?)(-80), "-80" },
                { (SByte?)(-79), "-79" },
                { (SByte?)(-78), "-78" },
                { (SByte?)(-77), "-77" },
                { (SByte?)(-76), "-76" },
                { (SByte?)(-75), "-75" },
                { (SByte?)(-74), "-74" },
                { (SByte?)(-73), "-73" },
                { (SByte?)(-72), "-72" },
                { (SByte?)(-71), "-71" },
                { (SByte?)(-70), "-70" },
                { (SByte?)(-69), "-69" },
                { (SByte?)(-68), "-68" },
                { (SByte?)(-67), "-67" },
                { (SByte?)(-66), "-66" },
                { (SByte?)(-65), "-65" },
                { (SByte?)(-64), "-64" },
                { (SByte?)(-63), "-63" },
                { (SByte?)(-62), "-62" },
                { (SByte?)(-61), "-61" },
                { (SByte?)(-60), "-60" },
                { (SByte?)(-59), "-59" },
                { (SByte?)(-58), "-58" },
                { (SByte?)(-57), "-57" },
                { (SByte?)(-56), "-56" },
                { (SByte?)(-55), "-55" },
                { (SByte?)(-54), "-54" },
                { (SByte?)(-53), "-53" },
                { (SByte?)(-52), "-52" },
                { (SByte?)(-51), "-51" },
                { (SByte?)(-50), "-50" },
                { (SByte?)(-49), "-49" },
                { (SByte?)(-48), "-48" },
                { (SByte?)(-47), "-47" },
                { (SByte?)(-46), "-46" },
                { (SByte?)(-45), "-45" },
                { (SByte?)(-44), "-44" },
                { (SByte?)(-43), "-43" },
                { (SByte?)(-42), "-42" },
                { (SByte?)(-41), "-41" },
                { (SByte?)(-40), "-40" },
                { (SByte?)(-39), "-39" },
                { (SByte?)(-38), "-38" },
                { (SByte?)(-37), "-37" },
                { (SByte?)(-36), "-36" },
                { (SByte?)(-35), "-35" },
                { (SByte?)(-34), "-34" },
                { (SByte?)(-33), "-33" },
                { (SByte?)(-32), "-32" },
                { (SByte?)(-31), "-31" },
                { (SByte?)(-30), "-30" },
                { (SByte?)(-29), "-29" },
                { (SByte?)(-28), "-28" },
                { (SByte?)(-27), "-27" },
                { (SByte?)(-26), "-26" },
                { (SByte?)(-25), "-25" },
                { (SByte?)(-24), "-24" },
                { (SByte?)(-23), "-23" },
                { (SByte?)(-22), "-22" },
                { (SByte?)(-21), "-21" },
                { (SByte?)(-20), "-20" },
                { (SByte?)(-19), "-19" },
                { (SByte?)(-18), "-18" },
                { (SByte?)(-17), "-17" },
                { (SByte?)(-16), "-16" },
                { (SByte?)(-15), "-15" },
                { (SByte?)(-14), "-14" },
                { (SByte?)(-13), "-13" },
                { (SByte?)(-12), "-12" },
                { (SByte?)(-11), "-11" },
                { (SByte?)(-10), "-10" },
                { (SByte?)(-9), "-9" },
                { (SByte?)(-8), "-8" },
                { (SByte?)(-7), "-7" },
                { (SByte?)(-6), "-6" },
                { (SByte?)(-5), "-5" },
                { (SByte?)(-4), "-4" },
                { (SByte?)(-3), "-3" },
                { (SByte?)(-2), "-2" },
                { (SByte?)(-1), "-1" },
                { (SByte?)(0), "0" },
                { (SByte?)(1), "1" },
                { (SByte?)(2), "2" },
                { (SByte?)(3), "3" },
                { (SByte?)(4), "4" },
                { (SByte?)(5), "5" },
                { (SByte?)(6), "6" },
                { (SByte?)(7), "7" },
                { (SByte?)(8), "8" },
                { (SByte?)(9), "9" },
                { (SByte?)(10), "10" },
                { (SByte?)(11), "11" },
                { (SByte?)(12), "12" },
                { (SByte?)(13), "13" },
                { (SByte?)(14), "14" },
                { (SByte?)(15), "15" },
                { (SByte?)(16), "16" },
                { (SByte?)(17), "17" },
                { (SByte?)(18), "18" },
                { (SByte?)(19), "19" },
                { (SByte?)(20), "20" },
                { (SByte?)(21), "21" },
                { (SByte?)(22), "22" },
                { (SByte?)(23), "23" },
                { (SByte?)(24), "24" },
                { (SByte?)(25), "25" },
                { (SByte?)(26), "26" },
                { (SByte?)(27), "27" },
                { (SByte?)(28), "28" },
                { (SByte?)(29), "29" },
                { (SByte?)(30), "30" },
                { (SByte?)(31), "31" },
                { (SByte?)(32), "32" },
                { (SByte?)(33), "33" },
                { (SByte?)(34), "34" },
                { (SByte?)(35), "35" },
                { (SByte?)(36), "36" },
                { (SByte?)(37), "37" },
                { (SByte?)(38), "38" },
                { (SByte?)(39), "39" },
                { (SByte?)(40), "40" },
                { (SByte?)(41), "41" },
                { (SByte?)(42), "42" },
                { (SByte?)(43), "43" },
                { (SByte?)(44), "44" },
                { (SByte?)(45), "45" },
                { (SByte?)(46), "46" },
                { (SByte?)(47), "47" },
                { (SByte?)(48), "48" },
                { (SByte?)(49), "49" },
                { (SByte?)(50), "50" },
                { (SByte?)(51), "51" },
                { (SByte?)(52), "52" },
                { (SByte?)(53), "53" },
                { (SByte?)(54), "54" },
                { (SByte?)(55), "55" },
                { (SByte?)(56), "56" },
                { (SByte?)(57), "57" },
                { (SByte?)(58), "58" },
                { (SByte?)(59), "59" },
                { (SByte?)(60), "60" },
                { (SByte?)(61), "61" },
                { (SByte?)(62), "62" },
                { (SByte?)(63), "63" },
                { (SByte?)(64), "64" },
                { (SByte?)(65), "65" },
                { (SByte?)(66), "66" },
                { (SByte?)(67), "67" },
                { (SByte?)(68), "68" },
                { (SByte?)(69), "69" },
                { (SByte?)(70), "70" },
                { (SByte?)(71), "71" },
                { (SByte?)(72), "72" },
                { (SByte?)(73), "73" },
                { (SByte?)(74), "74" },
                { (SByte?)(75), "75" },
                { (SByte?)(76), "76" },
                { (SByte?)(77), "77" },
                { (SByte?)(78), "78" },
                { (SByte?)(79), "79" },
                { (SByte?)(80), "80" },
                { (SByte?)(81), "81" },
                { (SByte?)(82), "82" },
                { (SByte?)(83), "83" },
                { (SByte?)(84), "84" },
                { (SByte?)(85), "85" },
                { (SByte?)(86), "86" },
                { (SByte?)(87), "87" },
                { (SByte?)(88), "88" },
                { (SByte?)(89), "89" },
                { (SByte?)(90), "90" },
                { (SByte?)(91), "91" },
                { (SByte?)(92), "92" },
                { (SByte?)(93), "93" },
                { (SByte?)(94), "94" },
                { (SByte?)(95), "95" },
                { (SByte?)(96), "96" },
                { (SByte?)(97), "97" },
                { (SByte?)(98), "98" },
                { (SByte?)(99), "99" },
                { (SByte?)(100), "100" },
                { (SByte?)(101), "101" },
                { (SByte?)(102), "102" },
                { (SByte?)(103), "103" },
                { (SByte?)(104), "104" },
                { (SByte?)(105), "105" },
                { (SByte?)(106), "106" },
                { (SByte?)(107), "107" },
                { (SByte?)(108), "108" },
                { (SByte?)(109), "109" },
                { (SByte?)(110), "110" },
                { (SByte?)(111), "111" },
                { (SByte?)(112), "112" },
                { (SByte?)(113), "113" },
                { (SByte?)(114), "114" },
                { (SByte?)(115), "115" },
                { (SByte?)(116), "116" },
                { (SByte?)(117), "117" },
                { (SByte?)(118), "118" },
                { (SByte?)(119), "119" },
                { (SByte?)(120), "120" },
                { (SByte?)(121), "121" },
                { (SByte?)(122), "122" },
                { (SByte?)(123), "123" },
                { (SByte?)(124), "124" },
                { (SByte?)(125), "125" },
                { (SByte?)(126), "126" },
                { (SByte?)(127), "127" },
            });
        }

        [TestMethod]
        public void FastSerializer_Int16()
        {
            AssertSerialize(new Asserts<Int16>
            {
                { (Int16)Int16.MinValue, Int16.MinValue.ToString() },
                { (Int16)Int16.MaxValue, Int16.MaxValue.ToString() },
                { (Int16)(Int16.MinValue + 1), ((Int16)(Int16.MinValue + 1)).ToString() },
                { (Int16)(Int16.MaxValue - 1), ((Int16)(Int16.MaxValue - 1)).ToString() },
                { (Int16)(-128), "-128" },
                { (Int16)(-127), "-127" },
                { (Int16)(-126), "-126" },
                { (Int16)(-125), "-125" },
                { (Int16)(-124), "-124" },
                { (Int16)(-123), "-123" },
                { (Int16)(-122), "-122" },
                { (Int16)(-121), "-121" },
                { (Int16)(-120), "-120" },
                { (Int16)(-119), "-119" },
                { (Int16)(-118), "-118" },
                { (Int16)(-117), "-117" },
                { (Int16)(-116), "-116" },
                { (Int16)(-115), "-115" },
                { (Int16)(-114), "-114" },
                { (Int16)(-113), "-113" },
                { (Int16)(-112), "-112" },
                { (Int16)(-111), "-111" },
                { (Int16)(-110), "-110" },
                { (Int16)(-109), "-109" },
                { (Int16)(-108), "-108" },
                { (Int16)(-107), "-107" },
                { (Int16)(-106), "-106" },
                { (Int16)(-105), "-105" },
                { (Int16)(-104), "-104" },
                { (Int16)(-103), "-103" },
                { (Int16)(-102), "-102" },
                { (Int16)(-101), "-101" },
                { (Int16)(-100), "-100" },
                { (Int16)(-99), "-99" },
                { (Int16)(-98), "-98" },
                { (Int16)(-97), "-97" },
                { (Int16)(-96), "-96" },
                { (Int16)(-95), "-95" },
                { (Int16)(-94), "-94" },
                { (Int16)(-93), "-93" },
                { (Int16)(-92), "-92" },
                { (Int16)(-91), "-91" },
                { (Int16)(-90), "-90" },
                { (Int16)(-89), "-89" },
                { (Int16)(-88), "-88" },
                { (Int16)(-87), "-87" },
                { (Int16)(-86), "-86" },
                { (Int16)(-85), "-85" },
                { (Int16)(-84), "-84" },
                { (Int16)(-83), "-83" },
                { (Int16)(-82), "-82" },
                { (Int16)(-81), "-81" },
                { (Int16)(-80), "-80" },
                { (Int16)(-79), "-79" },
                { (Int16)(-78), "-78" },
                { (Int16)(-77), "-77" },
                { (Int16)(-76), "-76" },
                { (Int16)(-75), "-75" },
                { (Int16)(-74), "-74" },
                { (Int16)(-73), "-73" },
                { (Int16)(-72), "-72" },
                { (Int16)(-71), "-71" },
                { (Int16)(-70), "-70" },
                { (Int16)(-69), "-69" },
                { (Int16)(-68), "-68" },
                { (Int16)(-67), "-67" },
                { (Int16)(-66), "-66" },
                { (Int16)(-65), "-65" },
                { (Int16)(-64), "-64" },
                { (Int16)(-63), "-63" },
                { (Int16)(-62), "-62" },
                { (Int16)(-61), "-61" },
                { (Int16)(-60), "-60" },
                { (Int16)(-59), "-59" },
                { (Int16)(-58), "-58" },
                { (Int16)(-57), "-57" },
                { (Int16)(-56), "-56" },
                { (Int16)(-55), "-55" },
                { (Int16)(-54), "-54" },
                { (Int16)(-53), "-53" },
                { (Int16)(-52), "-52" },
                { (Int16)(-51), "-51" },
                { (Int16)(-50), "-50" },
                { (Int16)(-49), "-49" },
                { (Int16)(-48), "-48" },
                { (Int16)(-47), "-47" },
                { (Int16)(-46), "-46" },
                { (Int16)(-45), "-45" },
                { (Int16)(-44), "-44" },
                { (Int16)(-43), "-43" },
                { (Int16)(-42), "-42" },
                { (Int16)(-41), "-41" },
                { (Int16)(-40), "-40" },
                { (Int16)(-39), "-39" },
                { (Int16)(-38), "-38" },
                { (Int16)(-37), "-37" },
                { (Int16)(-36), "-36" },
                { (Int16)(-35), "-35" },
                { (Int16)(-34), "-34" },
                { (Int16)(-33), "-33" },
                { (Int16)(-32), "-32" },
                { (Int16)(-31), "-31" },
                { (Int16)(-30), "-30" },
                { (Int16)(-29), "-29" },
                { (Int16)(-28), "-28" },
                { (Int16)(-27), "-27" },
                { (Int16)(-26), "-26" },
                { (Int16)(-25), "-25" },
                { (Int16)(-24), "-24" },
                { (Int16)(-23), "-23" },
                { (Int16)(-22), "-22" },
                { (Int16)(-21), "-21" },
                { (Int16)(-20), "-20" },
                { (Int16)(-19), "-19" },
                { (Int16)(-18), "-18" },
                { (Int16)(-17), "-17" },
                { (Int16)(-16), "-16" },
                { (Int16)(-15), "-15" },
                { (Int16)(-14), "-14" },
                { (Int16)(-13), "-13" },
                { (Int16)(-12), "-12" },
                { (Int16)(-11), "-11" },
                { (Int16)(-10), "-10" },
                { (Int16)(-9), "-9" },
                { (Int16)(-8), "-8" },
                { (Int16)(-7), "-7" },
                { (Int16)(-6), "-6" },
                { (Int16)(-5), "-5" },
                { (Int16)(-4), "-4" },
                { (Int16)(-3), "-3" },
                { (Int16)(-2), "-2" },
                { (Int16)(-1), "-1" },
                { (Int16)(0), "0" },
                { (Int16)(1), "1" },
                { (Int16)(2), "2" },
                { (Int16)(3), "3" },
                { (Int16)(4), "4" },
                { (Int16)(5), "5" },
                { (Int16)(6), "6" },
                { (Int16)(7), "7" },
                { (Int16)(8), "8" },
                { (Int16)(9), "9" },
                { (Int16)(10), "10" },
                { (Int16)(11), "11" },
                { (Int16)(12), "12" },
                { (Int16)(13), "13" },
                { (Int16)(14), "14" },
                { (Int16)(15), "15" },
                { (Int16)(16), "16" },
                { (Int16)(17), "17" },
                { (Int16)(18), "18" },
                { (Int16)(19), "19" },
                { (Int16)(20), "20" },
                { (Int16)(21), "21" },
                { (Int16)(22), "22" },
                { (Int16)(23), "23" },
                { (Int16)(24), "24" },
                { (Int16)(25), "25" },
                { (Int16)(26), "26" },
                { (Int16)(27), "27" },
                { (Int16)(28), "28" },
                { (Int16)(29), "29" },
                { (Int16)(30), "30" },
                { (Int16)(31), "31" },
                { (Int16)(32), "32" },
                { (Int16)(33), "33" },
                { (Int16)(34), "34" },
                { (Int16)(35), "35" },
                { (Int16)(36), "36" },
                { (Int16)(37), "37" },
                { (Int16)(38), "38" },
                { (Int16)(39), "39" },
                { (Int16)(40), "40" },
                { (Int16)(41), "41" },
                { (Int16)(42), "42" },
                { (Int16)(43), "43" },
                { (Int16)(44), "44" },
                { (Int16)(45), "45" },
                { (Int16)(46), "46" },
                { (Int16)(47), "47" },
                { (Int16)(48), "48" },
                { (Int16)(49), "49" },
                { (Int16)(50), "50" },
                { (Int16)(51), "51" },
                { (Int16)(52), "52" },
                { (Int16)(53), "53" },
                { (Int16)(54), "54" },
                { (Int16)(55), "55" },
                { (Int16)(56), "56" },
                { (Int16)(57), "57" },
                { (Int16)(58), "58" },
                { (Int16)(59), "59" },
                { (Int16)(60), "60" },
                { (Int16)(61), "61" },
                { (Int16)(62), "62" },
                { (Int16)(63), "63" },
                { (Int16)(64), "64" },
                { (Int16)(65), "65" },
                { (Int16)(66), "66" },
                { (Int16)(67), "67" },
                { (Int16)(68), "68" },
                { (Int16)(69), "69" },
                { (Int16)(70), "70" },
                { (Int16)(71), "71" },
                { (Int16)(72), "72" },
                { (Int16)(73), "73" },
                { (Int16)(74), "74" },
                { (Int16)(75), "75" },
                { (Int16)(76), "76" },
                { (Int16)(77), "77" },
                { (Int16)(78), "78" },
                { (Int16)(79), "79" },
                { (Int16)(80), "80" },
                { (Int16)(81), "81" },
                { (Int16)(82), "82" },
                { (Int16)(83), "83" },
                { (Int16)(84), "84" },
                { (Int16)(85), "85" },
                { (Int16)(86), "86" },
                { (Int16)(87), "87" },
                { (Int16)(88), "88" },
                { (Int16)(89), "89" },
                { (Int16)(90), "90" },
                { (Int16)(91), "91" },
                { (Int16)(92), "92" },
                { (Int16)(93), "93" },
                { (Int16)(94), "94" },
                { (Int16)(95), "95" },
                { (Int16)(96), "96" },
                { (Int16)(97), "97" },
                { (Int16)(98), "98" },
                { (Int16)(99), "99" },
                { (Int16)(100), "100" },
                { (Int16)(101), "101" },
                { (Int16)(102), "102" },
                { (Int16)(103), "103" },
                { (Int16)(104), "104" },
                { (Int16)(105), "105" },
                { (Int16)(106), "106" },
                { (Int16)(107), "107" },
                { (Int16)(108), "108" },
                { (Int16)(109), "109" },
                { (Int16)(110), "110" },
                { (Int16)(111), "111" },
                { (Int16)(112), "112" },
                { (Int16)(113), "113" },
                { (Int16)(114), "114" },
                { (Int16)(115), "115" },
                { (Int16)(116), "116" },
                { (Int16)(117), "117" },
                { (Int16)(118), "118" },
                { (Int16)(119), "119" },
                { (Int16)(120), "120" },
                { (Int16)(121), "121" },
                { (Int16)(122), "122" },
                { (Int16)(123), "123" },
                { (Int16)(124), "124" },
                { (Int16)(125), "125" },
                { (Int16)(126), "126" },
                { (Int16)(127), "127" },
            });
        }

        [TestMethod]
        public void FastSerializer_NullableInt16()
        {
            AssertSerialize(new Asserts<Int16?>
            {
                { (Int16?)null, "null" },
                { (Int16?)Int16.MinValue, Int16.MinValue.ToString() },
                { (Int16?)Int16.MaxValue, Int16.MaxValue.ToString() },
                { (Int16?)(Int16.MinValue + 1), ((Int16)(Int16.MinValue + 1)).ToString() },
                { (Int16?)(Int16.MaxValue - 1), ((Int16)(Int16.MaxValue - 1)).ToString() },
                { (Int16?)(-128), "-128" },
                { (Int16?)(-127), "-127" },
                { (Int16?)(-126), "-126" },
                { (Int16?)(-125), "-125" },
                { (Int16?)(-124), "-124" },
                { (Int16?)(-123), "-123" },
                { (Int16?)(-122), "-122" },
                { (Int16?)(-121), "-121" },
                { (Int16?)(-120), "-120" },
                { (Int16?)(-119), "-119" },
                { (Int16?)(-118), "-118" },
                { (Int16?)(-117), "-117" },
                { (Int16?)(-116), "-116" },
                { (Int16?)(-115), "-115" },
                { (Int16?)(-114), "-114" },
                { (Int16?)(-113), "-113" },
                { (Int16?)(-112), "-112" },
                { (Int16?)(-111), "-111" },
                { (Int16?)(-110), "-110" },
                { (Int16?)(-109), "-109" },
                { (Int16?)(-108), "-108" },
                { (Int16?)(-107), "-107" },
                { (Int16?)(-106), "-106" },
                { (Int16?)(-105), "-105" },
                { (Int16?)(-104), "-104" },
                { (Int16?)(-103), "-103" },
                { (Int16?)(-102), "-102" },
                { (Int16?)(-101), "-101" },
                { (Int16?)(-100), "-100" },
                { (Int16?)(-99), "-99" },
                { (Int16?)(-98), "-98" },
                { (Int16?)(-97), "-97" },
                { (Int16?)(-96), "-96" },
                { (Int16?)(-95), "-95" },
                { (Int16?)(-94), "-94" },
                { (Int16?)(-93), "-93" },
                { (Int16?)(-92), "-92" },
                { (Int16?)(-91), "-91" },
                { (Int16?)(-90), "-90" },
                { (Int16?)(-89), "-89" },
                { (Int16?)(-88), "-88" },
                { (Int16?)(-87), "-87" },
                { (Int16?)(-86), "-86" },
                { (Int16?)(-85), "-85" },
                { (Int16?)(-84), "-84" },
                { (Int16?)(-83), "-83" },
                { (Int16?)(-82), "-82" },
                { (Int16?)(-81), "-81" },
                { (Int16?)(-80), "-80" },
                { (Int16?)(-79), "-79" },
                { (Int16?)(-78), "-78" },
                { (Int16?)(-77), "-77" },
                { (Int16?)(-76), "-76" },
                { (Int16?)(-75), "-75" },
                { (Int16?)(-74), "-74" },
                { (Int16?)(-73), "-73" },
                { (Int16?)(-72), "-72" },
                { (Int16?)(-71), "-71" },
                { (Int16?)(-70), "-70" },
                { (Int16?)(-69), "-69" },
                { (Int16?)(-68), "-68" },
                { (Int16?)(-67), "-67" },
                { (Int16?)(-66), "-66" },
                { (Int16?)(-65), "-65" },
                { (Int16?)(-64), "-64" },
                { (Int16?)(-63), "-63" },
                { (Int16?)(-62), "-62" },
                { (Int16?)(-61), "-61" },
                { (Int16?)(-60), "-60" },
                { (Int16?)(-59), "-59" },
                { (Int16?)(-58), "-58" },
                { (Int16?)(-57), "-57" },
                { (Int16?)(-56), "-56" },
                { (Int16?)(-55), "-55" },
                { (Int16?)(-54), "-54" },
                { (Int16?)(-53), "-53" },
                { (Int16?)(-52), "-52" },
                { (Int16?)(-51), "-51" },
                { (Int16?)(-50), "-50" },
                { (Int16?)(-49), "-49" },
                { (Int16?)(-48), "-48" },
                { (Int16?)(-47), "-47" },
                { (Int16?)(-46), "-46" },
                { (Int16?)(-45), "-45" },
                { (Int16?)(-44), "-44" },
                { (Int16?)(-43), "-43" },
                { (Int16?)(-42), "-42" },
                { (Int16?)(-41), "-41" },
                { (Int16?)(-40), "-40" },
                { (Int16?)(-39), "-39" },
                { (Int16?)(-38), "-38" },
                { (Int16?)(-37), "-37" },
                { (Int16?)(-36), "-36" },
                { (Int16?)(-35), "-35" },
                { (Int16?)(-34), "-34" },
                { (Int16?)(-33), "-33" },
                { (Int16?)(-32), "-32" },
                { (Int16?)(-31), "-31" },
                { (Int16?)(-30), "-30" },
                { (Int16?)(-29), "-29" },
                { (Int16?)(-28), "-28" },
                { (Int16?)(-27), "-27" },
                { (Int16?)(-26), "-26" },
                { (Int16?)(-25), "-25" },
                { (Int16?)(-24), "-24" },
                { (Int16?)(-23), "-23" },
                { (Int16?)(-22), "-22" },
                { (Int16?)(-21), "-21" },
                { (Int16?)(-20), "-20" },
                { (Int16?)(-19), "-19" },
                { (Int16?)(-18), "-18" },
                { (Int16?)(-17), "-17" },
                { (Int16?)(-16), "-16" },
                { (Int16?)(-15), "-15" },
                { (Int16?)(-14), "-14" },
                { (Int16?)(-13), "-13" },
                { (Int16?)(-12), "-12" },
                { (Int16?)(-11), "-11" },
                { (Int16?)(-10), "-10" },
                { (Int16?)(-9), "-9" },
                { (Int16?)(-8), "-8" },
                { (Int16?)(-7), "-7" },
                { (Int16?)(-6), "-6" },
                { (Int16?)(-5), "-5" },
                { (Int16?)(-4), "-4" },
                { (Int16?)(-3), "-3" },
                { (Int16?)(-2), "-2" },
                { (Int16?)(-1), "-1" },
                { (Int16?)(0), "0" },
                { (Int16?)(1), "1" },
                { (Int16?)(2), "2" },
                { (Int16?)(3), "3" },
                { (Int16?)(4), "4" },
                { (Int16?)(5), "5" },
                { (Int16?)(6), "6" },
                { (Int16?)(7), "7" },
                { (Int16?)(8), "8" },
                { (Int16?)(9), "9" },
                { (Int16?)(10), "10" },
                { (Int16?)(11), "11" },
                { (Int16?)(12), "12" },
                { (Int16?)(13), "13" },
                { (Int16?)(14), "14" },
                { (Int16?)(15), "15" },
                { (Int16?)(16), "16" },
                { (Int16?)(17), "17" },
                { (Int16?)(18), "18" },
                { (Int16?)(19), "19" },
                { (Int16?)(20), "20" },
                { (Int16?)(21), "21" },
                { (Int16?)(22), "22" },
                { (Int16?)(23), "23" },
                { (Int16?)(24), "24" },
                { (Int16?)(25), "25" },
                { (Int16?)(26), "26" },
                { (Int16?)(27), "27" },
                { (Int16?)(28), "28" },
                { (Int16?)(29), "29" },
                { (Int16?)(30), "30" },
                { (Int16?)(31), "31" },
                { (Int16?)(32), "32" },
                { (Int16?)(33), "33" },
                { (Int16?)(34), "34" },
                { (Int16?)(35), "35" },
                { (Int16?)(36), "36" },
                { (Int16?)(37), "37" },
                { (Int16?)(38), "38" },
                { (Int16?)(39), "39" },
                { (Int16?)(40), "40" },
                { (Int16?)(41), "41" },
                { (Int16?)(42), "42" },
                { (Int16?)(43), "43" },
                { (Int16?)(44), "44" },
                { (Int16?)(45), "45" },
                { (Int16?)(46), "46" },
                { (Int16?)(47), "47" },
                { (Int16?)(48), "48" },
                { (Int16?)(49), "49" },
                { (Int16?)(50), "50" },
                { (Int16?)(51), "51" },
                { (Int16?)(52), "52" },
                { (Int16?)(53), "53" },
                { (Int16?)(54), "54" },
                { (Int16?)(55), "55" },
                { (Int16?)(56), "56" },
                { (Int16?)(57), "57" },
                { (Int16?)(58), "58" },
                { (Int16?)(59), "59" },
                { (Int16?)(60), "60" },
                { (Int16?)(61), "61" },
                { (Int16?)(62), "62" },
                { (Int16?)(63), "63" },
                { (Int16?)(64), "64" },
                { (Int16?)(65), "65" },
                { (Int16?)(66), "66" },
                { (Int16?)(67), "67" },
                { (Int16?)(68), "68" },
                { (Int16?)(69), "69" },
                { (Int16?)(70), "70" },
                { (Int16?)(71), "71" },
                { (Int16?)(72), "72" },
                { (Int16?)(73), "73" },
                { (Int16?)(74), "74" },
                { (Int16?)(75), "75" },
                { (Int16?)(76), "76" },
                { (Int16?)(77), "77" },
                { (Int16?)(78), "78" },
                { (Int16?)(79), "79" },
                { (Int16?)(80), "80" },
                { (Int16?)(81), "81" },
                { (Int16?)(82), "82" },
                { (Int16?)(83), "83" },
                { (Int16?)(84), "84" },
                { (Int16?)(85), "85" },
                { (Int16?)(86), "86" },
                { (Int16?)(87), "87" },
                { (Int16?)(88), "88" },
                { (Int16?)(89), "89" },
                { (Int16?)(90), "90" },
                { (Int16?)(91), "91" },
                { (Int16?)(92), "92" },
                { (Int16?)(93), "93" },
                { (Int16?)(94), "94" },
                { (Int16?)(95), "95" },
                { (Int16?)(96), "96" },
                { (Int16?)(97), "97" },
                { (Int16?)(98), "98" },
                { (Int16?)(99), "99" },
                { (Int16?)(100), "100" },
                { (Int16?)(101), "101" },
                { (Int16?)(102), "102" },
                { (Int16?)(103), "103" },
                { (Int16?)(104), "104" },
                { (Int16?)(105), "105" },
                { (Int16?)(106), "106" },
                { (Int16?)(107), "107" },
                { (Int16?)(108), "108" },
                { (Int16?)(109), "109" },
                { (Int16?)(110), "110" },
                { (Int16?)(111), "111" },
                { (Int16?)(112), "112" },
                { (Int16?)(113), "113" },
                { (Int16?)(114), "114" },
                { (Int16?)(115), "115" },
                { (Int16?)(116), "116" },
                { (Int16?)(117), "117" },
                { (Int16?)(118), "118" },
                { (Int16?)(119), "119" },
                { (Int16?)(120), "120" },
                { (Int16?)(121), "121" },
                { (Int16?)(122), "122" },
                { (Int16?)(123), "123" },
                { (Int16?)(124), "124" },
                { (Int16?)(125), "125" },
                { (Int16?)(126), "126" },
                { (Int16?)(127), "127" },
            });
        }

        [TestMethod]
        public void FastSerializer_Int32()
        {
            AssertSerialize(new Asserts<Int32>
            {
                { (Int32)Int32.MinValue, Int32.MinValue.ToString() },
                { (Int32)Int32.MaxValue, Int32.MaxValue.ToString() },
                { (Int32)(Int32.MinValue + 1), ((Int32)(Int32.MinValue + 1)).ToString() },
                { (Int32)(Int32.MaxValue - 1), ((Int32)(Int32.MaxValue - 1)).ToString() },
                { (Int32)(-128), "-128" },
                { (Int32)(-127), "-127" },
                { (Int32)(-126), "-126" },
                { (Int32)(-125), "-125" },
                { (Int32)(-124), "-124" },
                { (Int32)(-123), "-123" },
                { (Int32)(-122), "-122" },
                { (Int32)(-121), "-121" },
                { (Int32)(-120), "-120" },
                { (Int32)(-119), "-119" },
                { (Int32)(-118), "-118" },
                { (Int32)(-117), "-117" },
                { (Int32)(-116), "-116" },
                { (Int32)(-115), "-115" },
                { (Int32)(-114), "-114" },
                { (Int32)(-113), "-113" },
                { (Int32)(-112), "-112" },
                { (Int32)(-111), "-111" },
                { (Int32)(-110), "-110" },
                { (Int32)(-109), "-109" },
                { (Int32)(-108), "-108" },
                { (Int32)(-107), "-107" },
                { (Int32)(-106), "-106" },
                { (Int32)(-105), "-105" },
                { (Int32)(-104), "-104" },
                { (Int32)(-103), "-103" },
                { (Int32)(-102), "-102" },
                { (Int32)(-101), "-101" },
                { (Int32)(-100), "-100" },
                { (Int32)(-99), "-99" },
                { (Int32)(-98), "-98" },
                { (Int32)(-97), "-97" },
                { (Int32)(-96), "-96" },
                { (Int32)(-95), "-95" },
                { (Int32)(-94), "-94" },
                { (Int32)(-93), "-93" },
                { (Int32)(-92), "-92" },
                { (Int32)(-91), "-91" },
                { (Int32)(-90), "-90" },
                { (Int32)(-89), "-89" },
                { (Int32)(-88), "-88" },
                { (Int32)(-87), "-87" },
                { (Int32)(-86), "-86" },
                { (Int32)(-85), "-85" },
                { (Int32)(-84), "-84" },
                { (Int32)(-83), "-83" },
                { (Int32)(-82), "-82" },
                { (Int32)(-81), "-81" },
                { (Int32)(-80), "-80" },
                { (Int32)(-79), "-79" },
                { (Int32)(-78), "-78" },
                { (Int32)(-77), "-77" },
                { (Int32)(-76), "-76" },
                { (Int32)(-75), "-75" },
                { (Int32)(-74), "-74" },
                { (Int32)(-73), "-73" },
                { (Int32)(-72), "-72" },
                { (Int32)(-71), "-71" },
                { (Int32)(-70), "-70" },
                { (Int32)(-69), "-69" },
                { (Int32)(-68), "-68" },
                { (Int32)(-67), "-67" },
                { (Int32)(-66), "-66" },
                { (Int32)(-65), "-65" },
                { (Int32)(-64), "-64" },
                { (Int32)(-63), "-63" },
                { (Int32)(-62), "-62" },
                { (Int32)(-61), "-61" },
                { (Int32)(-60), "-60" },
                { (Int32)(-59), "-59" },
                { (Int32)(-58), "-58" },
                { (Int32)(-57), "-57" },
                { (Int32)(-56), "-56" },
                { (Int32)(-55), "-55" },
                { (Int32)(-54), "-54" },
                { (Int32)(-53), "-53" },
                { (Int32)(-52), "-52" },
                { (Int32)(-51), "-51" },
                { (Int32)(-50), "-50" },
                { (Int32)(-49), "-49" },
                { (Int32)(-48), "-48" },
                { (Int32)(-47), "-47" },
                { (Int32)(-46), "-46" },
                { (Int32)(-45), "-45" },
                { (Int32)(-44), "-44" },
                { (Int32)(-43), "-43" },
                { (Int32)(-42), "-42" },
                { (Int32)(-41), "-41" },
                { (Int32)(-40), "-40" },
                { (Int32)(-39), "-39" },
                { (Int32)(-38), "-38" },
                { (Int32)(-37), "-37" },
                { (Int32)(-36), "-36" },
                { (Int32)(-35), "-35" },
                { (Int32)(-34), "-34" },
                { (Int32)(-33), "-33" },
                { (Int32)(-32), "-32" },
                { (Int32)(-31), "-31" },
                { (Int32)(-30), "-30" },
                { (Int32)(-29), "-29" },
                { (Int32)(-28), "-28" },
                { (Int32)(-27), "-27" },
                { (Int32)(-26), "-26" },
                { (Int32)(-25), "-25" },
                { (Int32)(-24), "-24" },
                { (Int32)(-23), "-23" },
                { (Int32)(-22), "-22" },
                { (Int32)(-21), "-21" },
                { (Int32)(-20), "-20" },
                { (Int32)(-19), "-19" },
                { (Int32)(-18), "-18" },
                { (Int32)(-17), "-17" },
                { (Int32)(-16), "-16" },
                { (Int32)(-15), "-15" },
                { (Int32)(-14), "-14" },
                { (Int32)(-13), "-13" },
                { (Int32)(-12), "-12" },
                { (Int32)(-11), "-11" },
                { (Int32)(-10), "-10" },
                { (Int32)(-9), "-9" },
                { (Int32)(-8), "-8" },
                { (Int32)(-7), "-7" },
                { (Int32)(-6), "-6" },
                { (Int32)(-5), "-5" },
                { (Int32)(-4), "-4" },
                { (Int32)(-3), "-3" },
                { (Int32)(-2), "-2" },
                { (Int32)(-1), "-1" },
                { (Int32)(0), "0" },
                { (Int32)(1), "1" },
                { (Int32)(2), "2" },
                { (Int32)(3), "3" },
                { (Int32)(4), "4" },
                { (Int32)(5), "5" },
                { (Int32)(6), "6" },
                { (Int32)(7), "7" },
                { (Int32)(8), "8" },
                { (Int32)(9), "9" },
                { (Int32)(10), "10" },
                { (Int32)(11), "11" },
                { (Int32)(12), "12" },
                { (Int32)(13), "13" },
                { (Int32)(14), "14" },
                { (Int32)(15), "15" },
                { (Int32)(16), "16" },
                { (Int32)(17), "17" },
                { (Int32)(18), "18" },
                { (Int32)(19), "19" },
                { (Int32)(20), "20" },
                { (Int32)(21), "21" },
                { (Int32)(22), "22" },
                { (Int32)(23), "23" },
                { (Int32)(24), "24" },
                { (Int32)(25), "25" },
                { (Int32)(26), "26" },
                { (Int32)(27), "27" },
                { (Int32)(28), "28" },
                { (Int32)(29), "29" },
                { (Int32)(30), "30" },
                { (Int32)(31), "31" },
                { (Int32)(32), "32" },
                { (Int32)(33), "33" },
                { (Int32)(34), "34" },
                { (Int32)(35), "35" },
                { (Int32)(36), "36" },
                { (Int32)(37), "37" },
                { (Int32)(38), "38" },
                { (Int32)(39), "39" },
                { (Int32)(40), "40" },
                { (Int32)(41), "41" },
                { (Int32)(42), "42" },
                { (Int32)(43), "43" },
                { (Int32)(44), "44" },
                { (Int32)(45), "45" },
                { (Int32)(46), "46" },
                { (Int32)(47), "47" },
                { (Int32)(48), "48" },
                { (Int32)(49), "49" },
                { (Int32)(50), "50" },
                { (Int32)(51), "51" },
                { (Int32)(52), "52" },
                { (Int32)(53), "53" },
                { (Int32)(54), "54" },
                { (Int32)(55), "55" },
                { (Int32)(56), "56" },
                { (Int32)(57), "57" },
                { (Int32)(58), "58" },
                { (Int32)(59), "59" },
                { (Int32)(60), "60" },
                { (Int32)(61), "61" },
                { (Int32)(62), "62" },
                { (Int32)(63), "63" },
                { (Int32)(64), "64" },
                { (Int32)(65), "65" },
                { (Int32)(66), "66" },
                { (Int32)(67), "67" },
                { (Int32)(68), "68" },
                { (Int32)(69), "69" },
                { (Int32)(70), "70" },
                { (Int32)(71), "71" },
                { (Int32)(72), "72" },
                { (Int32)(73), "73" },
                { (Int32)(74), "74" },
                { (Int32)(75), "75" },
                { (Int32)(76), "76" },
                { (Int32)(77), "77" },
                { (Int32)(78), "78" },
                { (Int32)(79), "79" },
                { (Int32)(80), "80" },
                { (Int32)(81), "81" },
                { (Int32)(82), "82" },
                { (Int32)(83), "83" },
                { (Int32)(84), "84" },
                { (Int32)(85), "85" },
                { (Int32)(86), "86" },
                { (Int32)(87), "87" },
                { (Int32)(88), "88" },
                { (Int32)(89), "89" },
                { (Int32)(90), "90" },
                { (Int32)(91), "91" },
                { (Int32)(92), "92" },
                { (Int32)(93), "93" },
                { (Int32)(94), "94" },
                { (Int32)(95), "95" },
                { (Int32)(96), "96" },
                { (Int32)(97), "97" },
                { (Int32)(98), "98" },
                { (Int32)(99), "99" },
                { (Int32)(100), "100" },
                { (Int32)(101), "101" },
                { (Int32)(102), "102" },
                { (Int32)(103), "103" },
                { (Int32)(104), "104" },
                { (Int32)(105), "105" },
                { (Int32)(106), "106" },
                { (Int32)(107), "107" },
                { (Int32)(108), "108" },
                { (Int32)(109), "109" },
                { (Int32)(110), "110" },
                { (Int32)(111), "111" },
                { (Int32)(112), "112" },
                { (Int32)(113), "113" },
                { (Int32)(114), "114" },
                { (Int32)(115), "115" },
                { (Int32)(116), "116" },
                { (Int32)(117), "117" },
                { (Int32)(118), "118" },
                { (Int32)(119), "119" },
                { (Int32)(120), "120" },
                { (Int32)(121), "121" },
                { (Int32)(122), "122" },
                { (Int32)(123), "123" },
                { (Int32)(124), "124" },
                { (Int32)(125), "125" },
                { (Int32)(126), "126" },
                { (Int32)(127), "127" },
            });
        }

        [TestMethod]
        public void FastSerializer_NullableInt32()
        {
            AssertSerialize(new Asserts<Int32?>
            {
                { (Int32?)null, "null" },
                { (Int32?)Int32.MinValue, Int32.MinValue.ToString() },
                { (Int32?)Int32.MaxValue, Int32.MaxValue.ToString() },
                { (Int32?)(Int32.MinValue + 1), ((Int32)(Int32.MinValue + 1)).ToString() },
                { (Int32?)(Int32.MaxValue - 1), ((Int32)(Int32.MaxValue - 1)).ToString() },
                { (Int32?)(-128), "-128" },
                { (Int32?)(-127), "-127" },
                { (Int32?)(-126), "-126" },
                { (Int32?)(-125), "-125" },
                { (Int32?)(-124), "-124" },
                { (Int32?)(-123), "-123" },
                { (Int32?)(-122), "-122" },
                { (Int32?)(-121), "-121" },
                { (Int32?)(-120), "-120" },
                { (Int32?)(-119), "-119" },
                { (Int32?)(-118), "-118" },
                { (Int32?)(-117), "-117" },
                { (Int32?)(-116), "-116" },
                { (Int32?)(-115), "-115" },
                { (Int32?)(-114), "-114" },
                { (Int32?)(-113), "-113" },
                { (Int32?)(-112), "-112" },
                { (Int32?)(-111), "-111" },
                { (Int32?)(-110), "-110" },
                { (Int32?)(-109), "-109" },
                { (Int32?)(-108), "-108" },
                { (Int32?)(-107), "-107" },
                { (Int32?)(-106), "-106" },
                { (Int32?)(-105), "-105" },
                { (Int32?)(-104), "-104" },
                { (Int32?)(-103), "-103" },
                { (Int32?)(-102), "-102" },
                { (Int32?)(-101), "-101" },
                { (Int32?)(-100), "-100" },
                { (Int32?)(-99), "-99" },
                { (Int32?)(-98), "-98" },
                { (Int32?)(-97), "-97" },
                { (Int32?)(-96), "-96" },
                { (Int32?)(-95), "-95" },
                { (Int32?)(-94), "-94" },
                { (Int32?)(-93), "-93" },
                { (Int32?)(-92), "-92" },
                { (Int32?)(-91), "-91" },
                { (Int32?)(-90), "-90" },
                { (Int32?)(-89), "-89" },
                { (Int32?)(-88), "-88" },
                { (Int32?)(-87), "-87" },
                { (Int32?)(-86), "-86" },
                { (Int32?)(-85), "-85" },
                { (Int32?)(-84), "-84" },
                { (Int32?)(-83), "-83" },
                { (Int32?)(-82), "-82" },
                { (Int32?)(-81), "-81" },
                { (Int32?)(-80), "-80" },
                { (Int32?)(-79), "-79" },
                { (Int32?)(-78), "-78" },
                { (Int32?)(-77), "-77" },
                { (Int32?)(-76), "-76" },
                { (Int32?)(-75), "-75" },
                { (Int32?)(-74), "-74" },
                { (Int32?)(-73), "-73" },
                { (Int32?)(-72), "-72" },
                { (Int32?)(-71), "-71" },
                { (Int32?)(-70), "-70" },
                { (Int32?)(-69), "-69" },
                { (Int32?)(-68), "-68" },
                { (Int32?)(-67), "-67" },
                { (Int32?)(-66), "-66" },
                { (Int32?)(-65), "-65" },
                { (Int32?)(-64), "-64" },
                { (Int32?)(-63), "-63" },
                { (Int32?)(-62), "-62" },
                { (Int32?)(-61), "-61" },
                { (Int32?)(-60), "-60" },
                { (Int32?)(-59), "-59" },
                { (Int32?)(-58), "-58" },
                { (Int32?)(-57), "-57" },
                { (Int32?)(-56), "-56" },
                { (Int32?)(-55), "-55" },
                { (Int32?)(-54), "-54" },
                { (Int32?)(-53), "-53" },
                { (Int32?)(-52), "-52" },
                { (Int32?)(-51), "-51" },
                { (Int32?)(-50), "-50" },
                { (Int32?)(-49), "-49" },
                { (Int32?)(-48), "-48" },
                { (Int32?)(-47), "-47" },
                { (Int32?)(-46), "-46" },
                { (Int32?)(-45), "-45" },
                { (Int32?)(-44), "-44" },
                { (Int32?)(-43), "-43" },
                { (Int32?)(-42), "-42" },
                { (Int32?)(-41), "-41" },
                { (Int32?)(-40), "-40" },
                { (Int32?)(-39), "-39" },
                { (Int32?)(-38), "-38" },
                { (Int32?)(-37), "-37" },
                { (Int32?)(-36), "-36" },
                { (Int32?)(-35), "-35" },
                { (Int32?)(-34), "-34" },
                { (Int32?)(-33), "-33" },
                { (Int32?)(-32), "-32" },
                { (Int32?)(-31), "-31" },
                { (Int32?)(-30), "-30" },
                { (Int32?)(-29), "-29" },
                { (Int32?)(-28), "-28" },
                { (Int32?)(-27), "-27" },
                { (Int32?)(-26), "-26" },
                { (Int32?)(-25), "-25" },
                { (Int32?)(-24), "-24" },
                { (Int32?)(-23), "-23" },
                { (Int32?)(-22), "-22" },
                { (Int32?)(-21), "-21" },
                { (Int32?)(-20), "-20" },
                { (Int32?)(-19), "-19" },
                { (Int32?)(-18), "-18" },
                { (Int32?)(-17), "-17" },
                { (Int32?)(-16), "-16" },
                { (Int32?)(-15), "-15" },
                { (Int32?)(-14), "-14" },
                { (Int32?)(-13), "-13" },
                { (Int32?)(-12), "-12" },
                { (Int32?)(-11), "-11" },
                { (Int32?)(-10), "-10" },
                { (Int32?)(-9), "-9" },
                { (Int32?)(-8), "-8" },
                { (Int32?)(-7), "-7" },
                { (Int32?)(-6), "-6" },
                { (Int32?)(-5), "-5" },
                { (Int32?)(-4), "-4" },
                { (Int32?)(-3), "-3" },
                { (Int32?)(-2), "-2" },
                { (Int32?)(-1), "-1" },
                { (Int32?)(0), "0" },
                { (Int32?)(1), "1" },
                { (Int32?)(2), "2" },
                { (Int32?)(3), "3" },
                { (Int32?)(4), "4" },
                { (Int32?)(5), "5" },
                { (Int32?)(6), "6" },
                { (Int32?)(7), "7" },
                { (Int32?)(8), "8" },
                { (Int32?)(9), "9" },
                { (Int32?)(10), "10" },
                { (Int32?)(11), "11" },
                { (Int32?)(12), "12" },
                { (Int32?)(13), "13" },
                { (Int32?)(14), "14" },
                { (Int32?)(15), "15" },
                { (Int32?)(16), "16" },
                { (Int32?)(17), "17" },
                { (Int32?)(18), "18" },
                { (Int32?)(19), "19" },
                { (Int32?)(20), "20" },
                { (Int32?)(21), "21" },
                { (Int32?)(22), "22" },
                { (Int32?)(23), "23" },
                { (Int32?)(24), "24" },
                { (Int32?)(25), "25" },
                { (Int32?)(26), "26" },
                { (Int32?)(27), "27" },
                { (Int32?)(28), "28" },
                { (Int32?)(29), "29" },
                { (Int32?)(30), "30" },
                { (Int32?)(31), "31" },
                { (Int32?)(32), "32" },
                { (Int32?)(33), "33" },
                { (Int32?)(34), "34" },
                { (Int32?)(35), "35" },
                { (Int32?)(36), "36" },
                { (Int32?)(37), "37" },
                { (Int32?)(38), "38" },
                { (Int32?)(39), "39" },
                { (Int32?)(40), "40" },
                { (Int32?)(41), "41" },
                { (Int32?)(42), "42" },
                { (Int32?)(43), "43" },
                { (Int32?)(44), "44" },
                { (Int32?)(45), "45" },
                { (Int32?)(46), "46" },
                { (Int32?)(47), "47" },
                { (Int32?)(48), "48" },
                { (Int32?)(49), "49" },
                { (Int32?)(50), "50" },
                { (Int32?)(51), "51" },
                { (Int32?)(52), "52" },
                { (Int32?)(53), "53" },
                { (Int32?)(54), "54" },
                { (Int32?)(55), "55" },
                { (Int32?)(56), "56" },
                { (Int32?)(57), "57" },
                { (Int32?)(58), "58" },
                { (Int32?)(59), "59" },
                { (Int32?)(60), "60" },
                { (Int32?)(61), "61" },
                { (Int32?)(62), "62" },
                { (Int32?)(63), "63" },
                { (Int32?)(64), "64" },
                { (Int32?)(65), "65" },
                { (Int32?)(66), "66" },
                { (Int32?)(67), "67" },
                { (Int32?)(68), "68" },
                { (Int32?)(69), "69" },
                { (Int32?)(70), "70" },
                { (Int32?)(71), "71" },
                { (Int32?)(72), "72" },
                { (Int32?)(73), "73" },
                { (Int32?)(74), "74" },
                { (Int32?)(75), "75" },
                { (Int32?)(76), "76" },
                { (Int32?)(77), "77" },
                { (Int32?)(78), "78" },
                { (Int32?)(79), "79" },
                { (Int32?)(80), "80" },
                { (Int32?)(81), "81" },
                { (Int32?)(82), "82" },
                { (Int32?)(83), "83" },
                { (Int32?)(84), "84" },
                { (Int32?)(85), "85" },
                { (Int32?)(86), "86" },
                { (Int32?)(87), "87" },
                { (Int32?)(88), "88" },
                { (Int32?)(89), "89" },
                { (Int32?)(90), "90" },
                { (Int32?)(91), "91" },
                { (Int32?)(92), "92" },
                { (Int32?)(93), "93" },
                { (Int32?)(94), "94" },
                { (Int32?)(95), "95" },
                { (Int32?)(96), "96" },
                { (Int32?)(97), "97" },
                { (Int32?)(98), "98" },
                { (Int32?)(99), "99" },
                { (Int32?)(100), "100" },
                { (Int32?)(101), "101" },
                { (Int32?)(102), "102" },
                { (Int32?)(103), "103" },
                { (Int32?)(104), "104" },
                { (Int32?)(105), "105" },
                { (Int32?)(106), "106" },
                { (Int32?)(107), "107" },
                { (Int32?)(108), "108" },
                { (Int32?)(109), "109" },
                { (Int32?)(110), "110" },
                { (Int32?)(111), "111" },
                { (Int32?)(112), "112" },
                { (Int32?)(113), "113" },
                { (Int32?)(114), "114" },
                { (Int32?)(115), "115" },
                { (Int32?)(116), "116" },
                { (Int32?)(117), "117" },
                { (Int32?)(118), "118" },
                { (Int32?)(119), "119" },
                { (Int32?)(120), "120" },
                { (Int32?)(121), "121" },
                { (Int32?)(122), "122" },
                { (Int32?)(123), "123" },
                { (Int32?)(124), "124" },
                { (Int32?)(125), "125" },
                { (Int32?)(126), "126" },
                { (Int32?)(127), "127" },
            });
        }

        [TestMethod]
        public void FastSerializer_Int64()
        {
            AssertSerialize(new Asserts<Int64>
            {
                { (Int64)Int64.MinValue, Int64.MinValue.ToString() },
                { (Int64)Int64.MaxValue, Int64.MaxValue.ToString() },
                { (Int64)(Int64.MinValue + 1), ((Int64)(Int64.MinValue + 1)).ToString() },
                { (Int64)(Int64.MaxValue - 1), ((Int64)(Int64.MaxValue - 1)).ToString() },
                { (Int64)(-128), "-128" },
                { (Int64)(-127), "-127" },
                { (Int64)(-126), "-126" },
                { (Int64)(-125), "-125" },
                { (Int64)(-124), "-124" },
                { (Int64)(-123), "-123" },
                { (Int64)(-122), "-122" },
                { (Int64)(-121), "-121" },
                { (Int64)(-120), "-120" },
                { (Int64)(-119), "-119" },
                { (Int64)(-118), "-118" },
                { (Int64)(-117), "-117" },
                { (Int64)(-116), "-116" },
                { (Int64)(-115), "-115" },
                { (Int64)(-114), "-114" },
                { (Int64)(-113), "-113" },
                { (Int64)(-112), "-112" },
                { (Int64)(-111), "-111" },
                { (Int64)(-110), "-110" },
                { (Int64)(-109), "-109" },
                { (Int64)(-108), "-108" },
                { (Int64)(-107), "-107" },
                { (Int64)(-106), "-106" },
                { (Int64)(-105), "-105" },
                { (Int64)(-104), "-104" },
                { (Int64)(-103), "-103" },
                { (Int64)(-102), "-102" },
                { (Int64)(-101), "-101" },
                { (Int64)(-100), "-100" },
                { (Int64)(-99), "-99" },
                { (Int64)(-98), "-98" },
                { (Int64)(-97), "-97" },
                { (Int64)(-96), "-96" },
                { (Int64)(-95), "-95" },
                { (Int64)(-94), "-94" },
                { (Int64)(-93), "-93" },
                { (Int64)(-92), "-92" },
                { (Int64)(-91), "-91" },
                { (Int64)(-90), "-90" },
                { (Int64)(-89), "-89" },
                { (Int64)(-88), "-88" },
                { (Int64)(-87), "-87" },
                { (Int64)(-86), "-86" },
                { (Int64)(-85), "-85" },
                { (Int64)(-84), "-84" },
                { (Int64)(-83), "-83" },
                { (Int64)(-82), "-82" },
                { (Int64)(-81), "-81" },
                { (Int64)(-80), "-80" },
                { (Int64)(-79), "-79" },
                { (Int64)(-78), "-78" },
                { (Int64)(-77), "-77" },
                { (Int64)(-76), "-76" },
                { (Int64)(-75), "-75" },
                { (Int64)(-74), "-74" },
                { (Int64)(-73), "-73" },
                { (Int64)(-72), "-72" },
                { (Int64)(-71), "-71" },
                { (Int64)(-70), "-70" },
                { (Int64)(-69), "-69" },
                { (Int64)(-68), "-68" },
                { (Int64)(-67), "-67" },
                { (Int64)(-66), "-66" },
                { (Int64)(-65), "-65" },
                { (Int64)(-64), "-64" },
                { (Int64)(-63), "-63" },
                { (Int64)(-62), "-62" },
                { (Int64)(-61), "-61" },
                { (Int64)(-60), "-60" },
                { (Int64)(-59), "-59" },
                { (Int64)(-58), "-58" },
                { (Int64)(-57), "-57" },
                { (Int64)(-56), "-56" },
                { (Int64)(-55), "-55" },
                { (Int64)(-54), "-54" },
                { (Int64)(-53), "-53" },
                { (Int64)(-52), "-52" },
                { (Int64)(-51), "-51" },
                { (Int64)(-50), "-50" },
                { (Int64)(-49), "-49" },
                { (Int64)(-48), "-48" },
                { (Int64)(-47), "-47" },
                { (Int64)(-46), "-46" },
                { (Int64)(-45), "-45" },
                { (Int64)(-44), "-44" },
                { (Int64)(-43), "-43" },
                { (Int64)(-42), "-42" },
                { (Int64)(-41), "-41" },
                { (Int64)(-40), "-40" },
                { (Int64)(-39), "-39" },
                { (Int64)(-38), "-38" },
                { (Int64)(-37), "-37" },
                { (Int64)(-36), "-36" },
                { (Int64)(-35), "-35" },
                { (Int64)(-34), "-34" },
                { (Int64)(-33), "-33" },
                { (Int64)(-32), "-32" },
                { (Int64)(-31), "-31" },
                { (Int64)(-30), "-30" },
                { (Int64)(-29), "-29" },
                { (Int64)(-28), "-28" },
                { (Int64)(-27), "-27" },
                { (Int64)(-26), "-26" },
                { (Int64)(-25), "-25" },
                { (Int64)(-24), "-24" },
                { (Int64)(-23), "-23" },
                { (Int64)(-22), "-22" },
                { (Int64)(-21), "-21" },
                { (Int64)(-20), "-20" },
                { (Int64)(-19), "-19" },
                { (Int64)(-18), "-18" },
                { (Int64)(-17), "-17" },
                { (Int64)(-16), "-16" },
                { (Int64)(-15), "-15" },
                { (Int64)(-14), "-14" },
                { (Int64)(-13), "-13" },
                { (Int64)(-12), "-12" },
                { (Int64)(-11), "-11" },
                { (Int64)(-10), "-10" },
                { (Int64)(-9), "-9" },
                { (Int64)(-8), "-8" },
                { (Int64)(-7), "-7" },
                { (Int64)(-6), "-6" },
                { (Int64)(-5), "-5" },
                { (Int64)(-4), "-4" },
                { (Int64)(-3), "-3" },
                { (Int64)(-2), "-2" },
                { (Int64)(-1), "-1" },
                { (Int64)(0), "0" },
                { (Int64)(1), "1" },
                { (Int64)(2), "2" },
                { (Int64)(3), "3" },
                { (Int64)(4), "4" },
                { (Int64)(5), "5" },
                { (Int64)(6), "6" },
                { (Int64)(7), "7" },
                { (Int64)(8), "8" },
                { (Int64)(9), "9" },
                { (Int64)(10), "10" },
                { (Int64)(11), "11" },
                { (Int64)(12), "12" },
                { (Int64)(13), "13" },
                { (Int64)(14), "14" },
                { (Int64)(15), "15" },
                { (Int64)(16), "16" },
                { (Int64)(17), "17" },
                { (Int64)(18), "18" },
                { (Int64)(19), "19" },
                { (Int64)(20), "20" },
                { (Int64)(21), "21" },
                { (Int64)(22), "22" },
                { (Int64)(23), "23" },
                { (Int64)(24), "24" },
                { (Int64)(25), "25" },
                { (Int64)(26), "26" },
                { (Int64)(27), "27" },
                { (Int64)(28), "28" },
                { (Int64)(29), "29" },
                { (Int64)(30), "30" },
                { (Int64)(31), "31" },
                { (Int64)(32), "32" },
                { (Int64)(33), "33" },
                { (Int64)(34), "34" },
                { (Int64)(35), "35" },
                { (Int64)(36), "36" },
                { (Int64)(37), "37" },
                { (Int64)(38), "38" },
                { (Int64)(39), "39" },
                { (Int64)(40), "40" },
                { (Int64)(41), "41" },
                { (Int64)(42), "42" },
                { (Int64)(43), "43" },
                { (Int64)(44), "44" },
                { (Int64)(45), "45" },
                { (Int64)(46), "46" },
                { (Int64)(47), "47" },
                { (Int64)(48), "48" },
                { (Int64)(49), "49" },
                { (Int64)(50), "50" },
                { (Int64)(51), "51" },
                { (Int64)(52), "52" },
                { (Int64)(53), "53" },
                { (Int64)(54), "54" },
                { (Int64)(55), "55" },
                { (Int64)(56), "56" },
                { (Int64)(57), "57" },
                { (Int64)(58), "58" },
                { (Int64)(59), "59" },
                { (Int64)(60), "60" },
                { (Int64)(61), "61" },
                { (Int64)(62), "62" },
                { (Int64)(63), "63" },
                { (Int64)(64), "64" },
                { (Int64)(65), "65" },
                { (Int64)(66), "66" },
                { (Int64)(67), "67" },
                { (Int64)(68), "68" },
                { (Int64)(69), "69" },
                { (Int64)(70), "70" },
                { (Int64)(71), "71" },
                { (Int64)(72), "72" },
                { (Int64)(73), "73" },
                { (Int64)(74), "74" },
                { (Int64)(75), "75" },
                { (Int64)(76), "76" },
                { (Int64)(77), "77" },
                { (Int64)(78), "78" },
                { (Int64)(79), "79" },
                { (Int64)(80), "80" },
                { (Int64)(81), "81" },
                { (Int64)(82), "82" },
                { (Int64)(83), "83" },
                { (Int64)(84), "84" },
                { (Int64)(85), "85" },
                { (Int64)(86), "86" },
                { (Int64)(87), "87" },
                { (Int64)(88), "88" },
                { (Int64)(89), "89" },
                { (Int64)(90), "90" },
                { (Int64)(91), "91" },
                { (Int64)(92), "92" },
                { (Int64)(93), "93" },
                { (Int64)(94), "94" },
                { (Int64)(95), "95" },
                { (Int64)(96), "96" },
                { (Int64)(97), "97" },
                { (Int64)(98), "98" },
                { (Int64)(99), "99" },
                { (Int64)(100), "100" },
                { (Int64)(101), "101" },
                { (Int64)(102), "102" },
                { (Int64)(103), "103" },
                { (Int64)(104), "104" },
                { (Int64)(105), "105" },
                { (Int64)(106), "106" },
                { (Int64)(107), "107" },
                { (Int64)(108), "108" },
                { (Int64)(109), "109" },
                { (Int64)(110), "110" },
                { (Int64)(111), "111" },
                { (Int64)(112), "112" },
                { (Int64)(113), "113" },
                { (Int64)(114), "114" },
                { (Int64)(115), "115" },
                { (Int64)(116), "116" },
                { (Int64)(117), "117" },
                { (Int64)(118), "118" },
                { (Int64)(119), "119" },
                { (Int64)(120), "120" },
                { (Int64)(121), "121" },
                { (Int64)(122), "122" },
                { (Int64)(123), "123" },
                { (Int64)(124), "124" },
                { (Int64)(125), "125" },
                { (Int64)(126), "126" },
                { (Int64)(127), "127" },
            });
        }

        [TestMethod]
        public void FastSerializer_NullableInt64()
        {
            AssertSerialize(new Asserts<Int64?>
            {
                { (Int64?)null, "null" },
                { (Int64?)Int64.MinValue, Int64.MinValue.ToString() },
                { (Int64?)Int64.MaxValue, Int64.MaxValue.ToString() },
                { (Int64?)(Int64.MinValue + 1), ((Int64)(Int64.MinValue + 1)).ToString() },
                { (Int64?)(Int64.MaxValue - 1), ((Int64)(Int64.MaxValue - 1)).ToString() },
                { (Int64?)(-128), "-128" },
                { (Int64?)(-127), "-127" },
                { (Int64?)(-126), "-126" },
                { (Int64?)(-125), "-125" },
                { (Int64?)(-124), "-124" },
                { (Int64?)(-123), "-123" },
                { (Int64?)(-122), "-122" },
                { (Int64?)(-121), "-121" },
                { (Int64?)(-120), "-120" },
                { (Int64?)(-119), "-119" },
                { (Int64?)(-118), "-118" },
                { (Int64?)(-117), "-117" },
                { (Int64?)(-116), "-116" },
                { (Int64?)(-115), "-115" },
                { (Int64?)(-114), "-114" },
                { (Int64?)(-113), "-113" },
                { (Int64?)(-112), "-112" },
                { (Int64?)(-111), "-111" },
                { (Int64?)(-110), "-110" },
                { (Int64?)(-109), "-109" },
                { (Int64?)(-108), "-108" },
                { (Int64?)(-107), "-107" },
                { (Int64?)(-106), "-106" },
                { (Int64?)(-105), "-105" },
                { (Int64?)(-104), "-104" },
                { (Int64?)(-103), "-103" },
                { (Int64?)(-102), "-102" },
                { (Int64?)(-101), "-101" },
                { (Int64?)(-100), "-100" },
                { (Int64?)(-99), "-99" },
                { (Int64?)(-98), "-98" },
                { (Int64?)(-97), "-97" },
                { (Int64?)(-96), "-96" },
                { (Int64?)(-95), "-95" },
                { (Int64?)(-94), "-94" },
                { (Int64?)(-93), "-93" },
                { (Int64?)(-92), "-92" },
                { (Int64?)(-91), "-91" },
                { (Int64?)(-90), "-90" },
                { (Int64?)(-89), "-89" },
                { (Int64?)(-88), "-88" },
                { (Int64?)(-87), "-87" },
                { (Int64?)(-86), "-86" },
                { (Int64?)(-85), "-85" },
                { (Int64?)(-84), "-84" },
                { (Int64?)(-83), "-83" },
                { (Int64?)(-82), "-82" },
                { (Int64?)(-81), "-81" },
                { (Int64?)(-80), "-80" },
                { (Int64?)(-79), "-79" },
                { (Int64?)(-78), "-78" },
                { (Int64?)(-77), "-77" },
                { (Int64?)(-76), "-76" },
                { (Int64?)(-75), "-75" },
                { (Int64?)(-74), "-74" },
                { (Int64?)(-73), "-73" },
                { (Int64?)(-72), "-72" },
                { (Int64?)(-71), "-71" },
                { (Int64?)(-70), "-70" },
                { (Int64?)(-69), "-69" },
                { (Int64?)(-68), "-68" },
                { (Int64?)(-67), "-67" },
                { (Int64?)(-66), "-66" },
                { (Int64?)(-65), "-65" },
                { (Int64?)(-64), "-64" },
                { (Int64?)(-63), "-63" },
                { (Int64?)(-62), "-62" },
                { (Int64?)(-61), "-61" },
                { (Int64?)(-60), "-60" },
                { (Int64?)(-59), "-59" },
                { (Int64?)(-58), "-58" },
                { (Int64?)(-57), "-57" },
                { (Int64?)(-56), "-56" },
                { (Int64?)(-55), "-55" },
                { (Int64?)(-54), "-54" },
                { (Int64?)(-53), "-53" },
                { (Int64?)(-52), "-52" },
                { (Int64?)(-51), "-51" },
                { (Int64?)(-50), "-50" },
                { (Int64?)(-49), "-49" },
                { (Int64?)(-48), "-48" },
                { (Int64?)(-47), "-47" },
                { (Int64?)(-46), "-46" },
                { (Int64?)(-45), "-45" },
                { (Int64?)(-44), "-44" },
                { (Int64?)(-43), "-43" },
                { (Int64?)(-42), "-42" },
                { (Int64?)(-41), "-41" },
                { (Int64?)(-40), "-40" },
                { (Int64?)(-39), "-39" },
                { (Int64?)(-38), "-38" },
                { (Int64?)(-37), "-37" },
                { (Int64?)(-36), "-36" },
                { (Int64?)(-35), "-35" },
                { (Int64?)(-34), "-34" },
                { (Int64?)(-33), "-33" },
                { (Int64?)(-32), "-32" },
                { (Int64?)(-31), "-31" },
                { (Int64?)(-30), "-30" },
                { (Int64?)(-29), "-29" },
                { (Int64?)(-28), "-28" },
                { (Int64?)(-27), "-27" },
                { (Int64?)(-26), "-26" },
                { (Int64?)(-25), "-25" },
                { (Int64?)(-24), "-24" },
                { (Int64?)(-23), "-23" },
                { (Int64?)(-22), "-22" },
                { (Int64?)(-21), "-21" },
                { (Int64?)(-20), "-20" },
                { (Int64?)(-19), "-19" },
                { (Int64?)(-18), "-18" },
                { (Int64?)(-17), "-17" },
                { (Int64?)(-16), "-16" },
                { (Int64?)(-15), "-15" },
                { (Int64?)(-14), "-14" },
                { (Int64?)(-13), "-13" },
                { (Int64?)(-12), "-12" },
                { (Int64?)(-11), "-11" },
                { (Int64?)(-10), "-10" },
                { (Int64?)(-9), "-9" },
                { (Int64?)(-8), "-8" },
                { (Int64?)(-7), "-7" },
                { (Int64?)(-6), "-6" },
                { (Int64?)(-5), "-5" },
                { (Int64?)(-4), "-4" },
                { (Int64?)(-3), "-3" },
                { (Int64?)(-2), "-2" },
                { (Int64?)(-1), "-1" },
                { (Int64?)(0), "0" },
                { (Int64?)(1), "1" },
                { (Int64?)(2), "2" },
                { (Int64?)(3), "3" },
                { (Int64?)(4), "4" },
                { (Int64?)(5), "5" },
                { (Int64?)(6), "6" },
                { (Int64?)(7), "7" },
                { (Int64?)(8), "8" },
                { (Int64?)(9), "9" },
                { (Int64?)(10), "10" },
                { (Int64?)(11), "11" },
                { (Int64?)(12), "12" },
                { (Int64?)(13), "13" },
                { (Int64?)(14), "14" },
                { (Int64?)(15), "15" },
                { (Int64?)(16), "16" },
                { (Int64?)(17), "17" },
                { (Int64?)(18), "18" },
                { (Int64?)(19), "19" },
                { (Int64?)(20), "20" },
                { (Int64?)(21), "21" },
                { (Int64?)(22), "22" },
                { (Int64?)(23), "23" },
                { (Int64?)(24), "24" },
                { (Int64?)(25), "25" },
                { (Int64?)(26), "26" },
                { (Int64?)(27), "27" },
                { (Int64?)(28), "28" },
                { (Int64?)(29), "29" },
                { (Int64?)(30), "30" },
                { (Int64?)(31), "31" },
                { (Int64?)(32), "32" },
                { (Int64?)(33), "33" },
                { (Int64?)(34), "34" },
                { (Int64?)(35), "35" },
                { (Int64?)(36), "36" },
                { (Int64?)(37), "37" },
                { (Int64?)(38), "38" },
                { (Int64?)(39), "39" },
                { (Int64?)(40), "40" },
                { (Int64?)(41), "41" },
                { (Int64?)(42), "42" },
                { (Int64?)(43), "43" },
                { (Int64?)(44), "44" },
                { (Int64?)(45), "45" },
                { (Int64?)(46), "46" },
                { (Int64?)(47), "47" },
                { (Int64?)(48), "48" },
                { (Int64?)(49), "49" },
                { (Int64?)(50), "50" },
                { (Int64?)(51), "51" },
                { (Int64?)(52), "52" },
                { (Int64?)(53), "53" },
                { (Int64?)(54), "54" },
                { (Int64?)(55), "55" },
                { (Int64?)(56), "56" },
                { (Int64?)(57), "57" },
                { (Int64?)(58), "58" },
                { (Int64?)(59), "59" },
                { (Int64?)(60), "60" },
                { (Int64?)(61), "61" },
                { (Int64?)(62), "62" },
                { (Int64?)(63), "63" },
                { (Int64?)(64), "64" },
                { (Int64?)(65), "65" },
                { (Int64?)(66), "66" },
                { (Int64?)(67), "67" },
                { (Int64?)(68), "68" },
                { (Int64?)(69), "69" },
                { (Int64?)(70), "70" },
                { (Int64?)(71), "71" },
                { (Int64?)(72), "72" },
                { (Int64?)(73), "73" },
                { (Int64?)(74), "74" },
                { (Int64?)(75), "75" },
                { (Int64?)(76), "76" },
                { (Int64?)(77), "77" },
                { (Int64?)(78), "78" },
                { (Int64?)(79), "79" },
                { (Int64?)(80), "80" },
                { (Int64?)(81), "81" },
                { (Int64?)(82), "82" },
                { (Int64?)(83), "83" },
                { (Int64?)(84), "84" },
                { (Int64?)(85), "85" },
                { (Int64?)(86), "86" },
                { (Int64?)(87), "87" },
                { (Int64?)(88), "88" },
                { (Int64?)(89), "89" },
                { (Int64?)(90), "90" },
                { (Int64?)(91), "91" },
                { (Int64?)(92), "92" },
                { (Int64?)(93), "93" },
                { (Int64?)(94), "94" },
                { (Int64?)(95), "95" },
                { (Int64?)(96), "96" },
                { (Int64?)(97), "97" },
                { (Int64?)(98), "98" },
                { (Int64?)(99), "99" },
                { (Int64?)(100), "100" },
                { (Int64?)(101), "101" },
                { (Int64?)(102), "102" },
                { (Int64?)(103), "103" },
                { (Int64?)(104), "104" },
                { (Int64?)(105), "105" },
                { (Int64?)(106), "106" },
                { (Int64?)(107), "107" },
                { (Int64?)(108), "108" },
                { (Int64?)(109), "109" },
                { (Int64?)(110), "110" },
                { (Int64?)(111), "111" },
                { (Int64?)(112), "112" },
                { (Int64?)(113), "113" },
                { (Int64?)(114), "114" },
                { (Int64?)(115), "115" },
                { (Int64?)(116), "116" },
                { (Int64?)(117), "117" },
                { (Int64?)(118), "118" },
                { (Int64?)(119), "119" },
                { (Int64?)(120), "120" },
                { (Int64?)(121), "121" },
                { (Int64?)(122), "122" },
                { (Int64?)(123), "123" },
                { (Int64?)(124), "124" },
                { (Int64?)(125), "125" },
                { (Int64?)(126), "126" },
                { (Int64?)(127), "127" },
            });
        }

        [TestMethod]
        public void FastSerializer_Byte()
        {
            AssertSerialize(new Asserts<Byte>
            {
                { (Byte)Byte.MinValue, Byte.MinValue.ToString() },
                { (Byte)Byte.MaxValue, Byte.MaxValue.ToString() },
                { (Byte)(Byte.MinValue + 1), ((Byte)(Byte.MinValue + 1)).ToString() },
                { (Byte)(Byte.MaxValue - 1), ((Byte)(Byte.MaxValue - 1)).ToString() },
                { (Byte)0, "0" },
                { (Byte)1, "1" },
                { (Byte)2, "2" },
                { (Byte)3, "3" },
                { (Byte)4, "4" },
                { (Byte)5, "5" },
                { (Byte)6, "6" },
                { (Byte)7, "7" },
                { (Byte)8, "8" },
                { (Byte)9, "9" },
                { (Byte)10, "10" },
                { (Byte)11, "11" },
                { (Byte)12, "12" },
                { (Byte)13, "13" },
                { (Byte)14, "14" },
                { (Byte)15, "15" },
                { (Byte)16, "16" },
                { (Byte)17, "17" },
                { (Byte)18, "18" },
                { (Byte)19, "19" },
                { (Byte)20, "20" },
                { (Byte)21, "21" },
                { (Byte)22, "22" },
                { (Byte)23, "23" },
                { (Byte)24, "24" },
                { (Byte)25, "25" },
                { (Byte)26, "26" },
                { (Byte)27, "27" },
                { (Byte)28, "28" },
                { (Byte)29, "29" },
                { (Byte)30, "30" },
                { (Byte)31, "31" },
                { (Byte)32, "32" },
                { (Byte)33, "33" },
                { (Byte)34, "34" },
                { (Byte)35, "35" },
                { (Byte)36, "36" },
                { (Byte)37, "37" },
                { (Byte)38, "38" },
                { (Byte)39, "39" },
                { (Byte)40, "40" },
                { (Byte)41, "41" },
                { (Byte)42, "42" },
                { (Byte)43, "43" },
                { (Byte)44, "44" },
                { (Byte)45, "45" },
                { (Byte)46, "46" },
                { (Byte)47, "47" },
                { (Byte)48, "48" },
                { (Byte)49, "49" },
                { (Byte)50, "50" },
                { (Byte)51, "51" },
                { (Byte)52, "52" },
                { (Byte)53, "53" },
                { (Byte)54, "54" },
                { (Byte)55, "55" },
                { (Byte)56, "56" },
                { (Byte)57, "57" },
                { (Byte)58, "58" },
                { (Byte)59, "59" },
                { (Byte)60, "60" },
                { (Byte)61, "61" },
                { (Byte)62, "62" },
                { (Byte)63, "63" },
                { (Byte)64, "64" },
                { (Byte)65, "65" },
                { (Byte)66, "66" },
                { (Byte)67, "67" },
                { (Byte)68, "68" },
                { (Byte)69, "69" },
                { (Byte)70, "70" },
                { (Byte)71, "71" },
                { (Byte)72, "72" },
                { (Byte)73, "73" },
                { (Byte)74, "74" },
                { (Byte)75, "75" },
                { (Byte)76, "76" },
                { (Byte)77, "77" },
                { (Byte)78, "78" },
                { (Byte)79, "79" },
                { (Byte)80, "80" },
                { (Byte)81, "81" },
                { (Byte)82, "82" },
                { (Byte)83, "83" },
                { (Byte)84, "84" },
                { (Byte)85, "85" },
                { (Byte)86, "86" },
                { (Byte)87, "87" },
                { (Byte)88, "88" },
                { (Byte)89, "89" },
                { (Byte)90, "90" },
                { (Byte)91, "91" },
                { (Byte)92, "92" },
                { (Byte)93, "93" },
                { (Byte)94, "94" },
                { (Byte)95, "95" },
                { (Byte)96, "96" },
                { (Byte)97, "97" },
                { (Byte)98, "98" },
                { (Byte)99, "99" },
                { (Byte)100, "100" },
                { (Byte)101, "101" },
                { (Byte)102, "102" },
                { (Byte)103, "103" },
                { (Byte)104, "104" },
                { (Byte)105, "105" },
                { (Byte)106, "106" },
                { (Byte)107, "107" },
                { (Byte)108, "108" },
                { (Byte)109, "109" },
                { (Byte)110, "110" },
                { (Byte)111, "111" },
                { (Byte)112, "112" },
                { (Byte)113, "113" },
                { (Byte)114, "114" },
                { (Byte)115, "115" },
                { (Byte)116, "116" },
                { (Byte)117, "117" },
                { (Byte)118, "118" },
                { (Byte)119, "119" },
                { (Byte)120, "120" },
                { (Byte)121, "121" },
                { (Byte)122, "122" },
                { (Byte)123, "123" },
                { (Byte)124, "124" },
                { (Byte)125, "125" },
                { (Byte)126, "126" },
                { (Byte)127, "127" },
                { (Byte)128, "128" },
                { (Byte)129, "129" },
                { (Byte)130, "130" },
                { (Byte)131, "131" },
                { (Byte)132, "132" },
                { (Byte)133, "133" },
                { (Byte)134, "134" },
                { (Byte)135, "135" },
                { (Byte)136, "136" },
                { (Byte)137, "137" },
                { (Byte)138, "138" },
                { (Byte)139, "139" },
                { (Byte)140, "140" },
                { (Byte)141, "141" },
                { (Byte)142, "142" },
                { (Byte)143, "143" },
                { (Byte)144, "144" },
                { (Byte)145, "145" },
                { (Byte)146, "146" },
                { (Byte)147, "147" },
                { (Byte)148, "148" },
                { (Byte)149, "149" },
                { (Byte)150, "150" },
                { (Byte)151, "151" },
                { (Byte)152, "152" },
                { (Byte)153, "153" },
                { (Byte)154, "154" },
                { (Byte)155, "155" },
                { (Byte)156, "156" },
                { (Byte)157, "157" },
                { (Byte)158, "158" },
                { (Byte)159, "159" },
                { (Byte)160, "160" },
                { (Byte)161, "161" },
                { (Byte)162, "162" },
                { (Byte)163, "163" },
                { (Byte)164, "164" },
                { (Byte)165, "165" },
                { (Byte)166, "166" },
                { (Byte)167, "167" },
                { (Byte)168, "168" },
                { (Byte)169, "169" },
                { (Byte)170, "170" },
                { (Byte)171, "171" },
                { (Byte)172, "172" },
                { (Byte)173, "173" },
                { (Byte)174, "174" },
                { (Byte)175, "175" },
                { (Byte)176, "176" },
                { (Byte)177, "177" },
                { (Byte)178, "178" },
                { (Byte)179, "179" },
                { (Byte)180, "180" },
                { (Byte)181, "181" },
                { (Byte)182, "182" },
                { (Byte)183, "183" },
                { (Byte)184, "184" },
                { (Byte)185, "185" },
                { (Byte)186, "186" },
                { (Byte)187, "187" },
                { (Byte)188, "188" },
                { (Byte)189, "189" },
                { (Byte)190, "190" },
                { (Byte)191, "191" },
                { (Byte)192, "192" },
                { (Byte)193, "193" },
                { (Byte)194, "194" },
                { (Byte)195, "195" },
                { (Byte)196, "196" },
                { (Byte)197, "197" },
                { (Byte)198, "198" },
                { (Byte)199, "199" },
                { (Byte)200, "200" },
                { (Byte)201, "201" },
                { (Byte)202, "202" },
                { (Byte)203, "203" },
                { (Byte)204, "204" },
                { (Byte)205, "205" },
                { (Byte)206, "206" },
                { (Byte)207, "207" },
                { (Byte)208, "208" },
                { (Byte)209, "209" },
                { (Byte)210, "210" },
                { (Byte)211, "211" },
                { (Byte)212, "212" },
                { (Byte)213, "213" },
                { (Byte)214, "214" },
                { (Byte)215, "215" },
                { (Byte)216, "216" },
                { (Byte)217, "217" },
                { (Byte)218, "218" },
                { (Byte)219, "219" },
                { (Byte)220, "220" },
                { (Byte)221, "221" },
                { (Byte)222, "222" },
                { (Byte)223, "223" },
                { (Byte)224, "224" },
                { (Byte)225, "225" },
                { (Byte)226, "226" },
                { (Byte)227, "227" },
                { (Byte)228, "228" },
                { (Byte)229, "229" },
                { (Byte)230, "230" },
                { (Byte)231, "231" },
                { (Byte)232, "232" },
                { (Byte)233, "233" },
                { (Byte)234, "234" },
                { (Byte)235, "235" },
                { (Byte)236, "236" },
                { (Byte)237, "237" },
                { (Byte)238, "238" },
                { (Byte)239, "239" },
                { (Byte)240, "240" },
                { (Byte)241, "241" },
                { (Byte)242, "242" },
                { (Byte)243, "243" },
                { (Byte)244, "244" },
                { (Byte)245, "245" },
                { (Byte)246, "246" },
                { (Byte)247, "247" },
                { (Byte)248, "248" },
                { (Byte)249, "249" },
                { (Byte)250, "250" },
                { (Byte)251, "251" },
                { (Byte)252, "252" },
                { (Byte)253, "253" },
                { (Byte)254, "254" },
                { (Byte)255, "255" },
            });
        }

        [TestMethod]
        public void FastSerializer_NullableByte()
        {
            AssertSerialize(new Asserts<Byte?>
            {
                { (Byte?)null, "null" },
                { (Byte?)Byte.MinValue, Byte.MinValue.ToString() },
                { (Byte?)Byte.MaxValue, Byte.MaxValue.ToString() },
                { (Byte?)(Byte.MinValue + 1), ((Byte)(Byte.MinValue + 1)).ToString() },
                { (Byte?)(Byte.MaxValue - 1), ((Byte)(Byte.MaxValue - 1)).ToString() },
                { (Byte?)0, "0" },
                { (Byte?)1, "1" },
                { (Byte?)2, "2" },
                { (Byte?)3, "3" },
                { (Byte?)4, "4" },
                { (Byte?)5, "5" },
                { (Byte?)6, "6" },
                { (Byte?)7, "7" },
                { (Byte?)8, "8" },
                { (Byte?)9, "9" },
                { (Byte?)10, "10" },
                { (Byte?)11, "11" },
                { (Byte?)12, "12" },
                { (Byte?)13, "13" },
                { (Byte?)14, "14" },
                { (Byte?)15, "15" },
                { (Byte?)16, "16" },
                { (Byte?)17, "17" },
                { (Byte?)18, "18" },
                { (Byte?)19, "19" },
                { (Byte?)20, "20" },
                { (Byte?)21, "21" },
                { (Byte?)22, "22" },
                { (Byte?)23, "23" },
                { (Byte?)24, "24" },
                { (Byte?)25, "25" },
                { (Byte?)26, "26" },
                { (Byte?)27, "27" },
                { (Byte?)28, "28" },
                { (Byte?)29, "29" },
                { (Byte?)30, "30" },
                { (Byte?)31, "31" },
                { (Byte?)32, "32" },
                { (Byte?)33, "33" },
                { (Byte?)34, "34" },
                { (Byte?)35, "35" },
                { (Byte?)36, "36" },
                { (Byte?)37, "37" },
                { (Byte?)38, "38" },
                { (Byte?)39, "39" },
                { (Byte?)40, "40" },
                { (Byte?)41, "41" },
                { (Byte?)42, "42" },
                { (Byte?)43, "43" },
                { (Byte?)44, "44" },
                { (Byte?)45, "45" },
                { (Byte?)46, "46" },
                { (Byte?)47, "47" },
                { (Byte?)48, "48" },
                { (Byte?)49, "49" },
                { (Byte?)50, "50" },
                { (Byte?)51, "51" },
                { (Byte?)52, "52" },
                { (Byte?)53, "53" },
                { (Byte?)54, "54" },
                { (Byte?)55, "55" },
                { (Byte?)56, "56" },
                { (Byte?)57, "57" },
                { (Byte?)58, "58" },
                { (Byte?)59, "59" },
                { (Byte?)60, "60" },
                { (Byte?)61, "61" },
                { (Byte?)62, "62" },
                { (Byte?)63, "63" },
                { (Byte?)64, "64" },
                { (Byte?)65, "65" },
                { (Byte?)66, "66" },
                { (Byte?)67, "67" },
                { (Byte?)68, "68" },
                { (Byte?)69, "69" },
                { (Byte?)70, "70" },
                { (Byte?)71, "71" },
                { (Byte?)72, "72" },
                { (Byte?)73, "73" },
                { (Byte?)74, "74" },
                { (Byte?)75, "75" },
                { (Byte?)76, "76" },
                { (Byte?)77, "77" },
                { (Byte?)78, "78" },
                { (Byte?)79, "79" },
                { (Byte?)80, "80" },
                { (Byte?)81, "81" },
                { (Byte?)82, "82" },
                { (Byte?)83, "83" },
                { (Byte?)84, "84" },
                { (Byte?)85, "85" },
                { (Byte?)86, "86" },
                { (Byte?)87, "87" },
                { (Byte?)88, "88" },
                { (Byte?)89, "89" },
                { (Byte?)90, "90" },
                { (Byte?)91, "91" },
                { (Byte?)92, "92" },
                { (Byte?)93, "93" },
                { (Byte?)94, "94" },
                { (Byte?)95, "95" },
                { (Byte?)96, "96" },
                { (Byte?)97, "97" },
                { (Byte?)98, "98" },
                { (Byte?)99, "99" },
                { (Byte?)100, "100" },
                { (Byte?)101, "101" },
                { (Byte?)102, "102" },
                { (Byte?)103, "103" },
                { (Byte?)104, "104" },
                { (Byte?)105, "105" },
                { (Byte?)106, "106" },
                { (Byte?)107, "107" },
                { (Byte?)108, "108" },
                { (Byte?)109, "109" },
                { (Byte?)110, "110" },
                { (Byte?)111, "111" },
                { (Byte?)112, "112" },
                { (Byte?)113, "113" },
                { (Byte?)114, "114" },
                { (Byte?)115, "115" },
                { (Byte?)116, "116" },
                { (Byte?)117, "117" },
                { (Byte?)118, "118" },
                { (Byte?)119, "119" },
                { (Byte?)120, "120" },
                { (Byte?)121, "121" },
                { (Byte?)122, "122" },
                { (Byte?)123, "123" },
                { (Byte?)124, "124" },
                { (Byte?)125, "125" },
                { (Byte?)126, "126" },
                { (Byte?)127, "127" },
                { (Byte?)128, "128" },
                { (Byte?)129, "129" },
                { (Byte?)130, "130" },
                { (Byte?)131, "131" },
                { (Byte?)132, "132" },
                { (Byte?)133, "133" },
                { (Byte?)134, "134" },
                { (Byte?)135, "135" },
                { (Byte?)136, "136" },
                { (Byte?)137, "137" },
                { (Byte?)138, "138" },
                { (Byte?)139, "139" },
                { (Byte?)140, "140" },
                { (Byte?)141, "141" },
                { (Byte?)142, "142" },
                { (Byte?)143, "143" },
                { (Byte?)144, "144" },
                { (Byte?)145, "145" },
                { (Byte?)146, "146" },
                { (Byte?)147, "147" },
                { (Byte?)148, "148" },
                { (Byte?)149, "149" },
                { (Byte?)150, "150" },
                { (Byte?)151, "151" },
                { (Byte?)152, "152" },
                { (Byte?)153, "153" },
                { (Byte?)154, "154" },
                { (Byte?)155, "155" },
                { (Byte?)156, "156" },
                { (Byte?)157, "157" },
                { (Byte?)158, "158" },
                { (Byte?)159, "159" },
                { (Byte?)160, "160" },
                { (Byte?)161, "161" },
                { (Byte?)162, "162" },
                { (Byte?)163, "163" },
                { (Byte?)164, "164" },
                { (Byte?)165, "165" },
                { (Byte?)166, "166" },
                { (Byte?)167, "167" },
                { (Byte?)168, "168" },
                { (Byte?)169, "169" },
                { (Byte?)170, "170" },
                { (Byte?)171, "171" },
                { (Byte?)172, "172" },
                { (Byte?)173, "173" },
                { (Byte?)174, "174" },
                { (Byte?)175, "175" },
                { (Byte?)176, "176" },
                { (Byte?)177, "177" },
                { (Byte?)178, "178" },
                { (Byte?)179, "179" },
                { (Byte?)180, "180" },
                { (Byte?)181, "181" },
                { (Byte?)182, "182" },
                { (Byte?)183, "183" },
                { (Byte?)184, "184" },
                { (Byte?)185, "185" },
                { (Byte?)186, "186" },
                { (Byte?)187, "187" },
                { (Byte?)188, "188" },
                { (Byte?)189, "189" },
                { (Byte?)190, "190" },
                { (Byte?)191, "191" },
                { (Byte?)192, "192" },
                { (Byte?)193, "193" },
                { (Byte?)194, "194" },
                { (Byte?)195, "195" },
                { (Byte?)196, "196" },
                { (Byte?)197, "197" },
                { (Byte?)198, "198" },
                { (Byte?)199, "199" },
                { (Byte?)200, "200" },
                { (Byte?)201, "201" },
                { (Byte?)202, "202" },
                { (Byte?)203, "203" },
                { (Byte?)204, "204" },
                { (Byte?)205, "205" },
                { (Byte?)206, "206" },
                { (Byte?)207, "207" },
                { (Byte?)208, "208" },
                { (Byte?)209, "209" },
                { (Byte?)210, "210" },
                { (Byte?)211, "211" },
                { (Byte?)212, "212" },
                { (Byte?)213, "213" },
                { (Byte?)214, "214" },
                { (Byte?)215, "215" },
                { (Byte?)216, "216" },
                { (Byte?)217, "217" },
                { (Byte?)218, "218" },
                { (Byte?)219, "219" },
                { (Byte?)220, "220" },
                { (Byte?)221, "221" },
                { (Byte?)222, "222" },
                { (Byte?)223, "223" },
                { (Byte?)224, "224" },
                { (Byte?)225, "225" },
                { (Byte?)226, "226" },
                { (Byte?)227, "227" },
                { (Byte?)228, "228" },
                { (Byte?)229, "229" },
                { (Byte?)230, "230" },
                { (Byte?)231, "231" },
                { (Byte?)232, "232" },
                { (Byte?)233, "233" },
                { (Byte?)234, "234" },
                { (Byte?)235, "235" },
                { (Byte?)236, "236" },
                { (Byte?)237, "237" },
                { (Byte?)238, "238" },
                { (Byte?)239, "239" },
                { (Byte?)240, "240" },
                { (Byte?)241, "241" },
                { (Byte?)242, "242" },
                { (Byte?)243, "243" },
                { (Byte?)244, "244" },
                { (Byte?)245, "245" },
                { (Byte?)246, "246" },
                { (Byte?)247, "247" },
                { (Byte?)248, "248" },
                { (Byte?)249, "249" },
                { (Byte?)250, "250" },
                { (Byte?)251, "251" },
                { (Byte?)252, "252" },
                { (Byte?)253, "253" },
                { (Byte?)254, "254" },
                { (Byte?)255, "255" },
            });
        }

        [TestMethod]
        public void FastSerializer_UInt16()
        {
            AssertSerialize(new Asserts<UInt16>
            {
                { (UInt16)UInt16.MinValue, UInt16.MinValue.ToString() },
                { (UInt16)UInt16.MaxValue, UInt16.MaxValue.ToString() },
                { (UInt16)(UInt16.MinValue + 1), ((UInt16)(UInt16.MinValue + 1)).ToString() },
                { (UInt16)(UInt16.MaxValue - 1), ((UInt16)(UInt16.MaxValue - 1)).ToString() },
                { (UInt16)0, "0" },
                { (UInt16)1, "1" },
                { (UInt16)2, "2" },
                { (UInt16)3, "3" },
                { (UInt16)4, "4" },
                { (UInt16)5, "5" },
                { (UInt16)6, "6" },
                { (UInt16)7, "7" },
                { (UInt16)8, "8" },
                { (UInt16)9, "9" },
                { (UInt16)10, "10" },
                { (UInt16)11, "11" },
                { (UInt16)12, "12" },
                { (UInt16)13, "13" },
                { (UInt16)14, "14" },
                { (UInt16)15, "15" },
                { (UInt16)16, "16" },
                { (UInt16)17, "17" },
                { (UInt16)18, "18" },
                { (UInt16)19, "19" },
                { (UInt16)20, "20" },
                { (UInt16)21, "21" },
                { (UInt16)22, "22" },
                { (UInt16)23, "23" },
                { (UInt16)24, "24" },
                { (UInt16)25, "25" },
                { (UInt16)26, "26" },
                { (UInt16)27, "27" },
                { (UInt16)28, "28" },
                { (UInt16)29, "29" },
                { (UInt16)30, "30" },
                { (UInt16)31, "31" },
                { (UInt16)32, "32" },
                { (UInt16)33, "33" },
                { (UInt16)34, "34" },
                { (UInt16)35, "35" },
                { (UInt16)36, "36" },
                { (UInt16)37, "37" },
                { (UInt16)38, "38" },
                { (UInt16)39, "39" },
                { (UInt16)40, "40" },
                { (UInt16)41, "41" },
                { (UInt16)42, "42" },
                { (UInt16)43, "43" },
                { (UInt16)44, "44" },
                { (UInt16)45, "45" },
                { (UInt16)46, "46" },
                { (UInt16)47, "47" },
                { (UInt16)48, "48" },
                { (UInt16)49, "49" },
                { (UInt16)50, "50" },
                { (UInt16)51, "51" },
                { (UInt16)52, "52" },
                { (UInt16)53, "53" },
                { (UInt16)54, "54" },
                { (UInt16)55, "55" },
                { (UInt16)56, "56" },
                { (UInt16)57, "57" },
                { (UInt16)58, "58" },
                { (UInt16)59, "59" },
                { (UInt16)60, "60" },
                { (UInt16)61, "61" },
                { (UInt16)62, "62" },
                { (UInt16)63, "63" },
                { (UInt16)64, "64" },
                { (UInt16)65, "65" },
                { (UInt16)66, "66" },
                { (UInt16)67, "67" },
                { (UInt16)68, "68" },
                { (UInt16)69, "69" },
                { (UInt16)70, "70" },
                { (UInt16)71, "71" },
                { (UInt16)72, "72" },
                { (UInt16)73, "73" },
                { (UInt16)74, "74" },
                { (UInt16)75, "75" },
                { (UInt16)76, "76" },
                { (UInt16)77, "77" },
                { (UInt16)78, "78" },
                { (UInt16)79, "79" },
                { (UInt16)80, "80" },
                { (UInt16)81, "81" },
                { (UInt16)82, "82" },
                { (UInt16)83, "83" },
                { (UInt16)84, "84" },
                { (UInt16)85, "85" },
                { (UInt16)86, "86" },
                { (UInt16)87, "87" },
                { (UInt16)88, "88" },
                { (UInt16)89, "89" },
                { (UInt16)90, "90" },
                { (UInt16)91, "91" },
                { (UInt16)92, "92" },
                { (UInt16)93, "93" },
                { (UInt16)94, "94" },
                { (UInt16)95, "95" },
                { (UInt16)96, "96" },
                { (UInt16)97, "97" },
                { (UInt16)98, "98" },
                { (UInt16)99, "99" },
                { (UInt16)100, "100" },
                { (UInt16)101, "101" },
                { (UInt16)102, "102" },
                { (UInt16)103, "103" },
                { (UInt16)104, "104" },
                { (UInt16)105, "105" },
                { (UInt16)106, "106" },
                { (UInt16)107, "107" },
                { (UInt16)108, "108" },
                { (UInt16)109, "109" },
                { (UInt16)110, "110" },
                { (UInt16)111, "111" },
                { (UInt16)112, "112" },
                { (UInt16)113, "113" },
                { (UInt16)114, "114" },
                { (UInt16)115, "115" },
                { (UInt16)116, "116" },
                { (UInt16)117, "117" },
                { (UInt16)118, "118" },
                { (UInt16)119, "119" },
                { (UInt16)120, "120" },
                { (UInt16)121, "121" },
                { (UInt16)122, "122" },
                { (UInt16)123, "123" },
                { (UInt16)124, "124" },
                { (UInt16)125, "125" },
                { (UInt16)126, "126" },
                { (UInt16)127, "127" },
                { (UInt16)128, "128" },
                { (UInt16)129, "129" },
                { (UInt16)130, "130" },
                { (UInt16)131, "131" },
                { (UInt16)132, "132" },
                { (UInt16)133, "133" },
                { (UInt16)134, "134" },
                { (UInt16)135, "135" },
                { (UInt16)136, "136" },
                { (UInt16)137, "137" },
                { (UInt16)138, "138" },
                { (UInt16)139, "139" },
                { (UInt16)140, "140" },
                { (UInt16)141, "141" },
                { (UInt16)142, "142" },
                { (UInt16)143, "143" },
                { (UInt16)144, "144" },
                { (UInt16)145, "145" },
                { (UInt16)146, "146" },
                { (UInt16)147, "147" },
                { (UInt16)148, "148" },
                { (UInt16)149, "149" },
                { (UInt16)150, "150" },
                { (UInt16)151, "151" },
                { (UInt16)152, "152" },
                { (UInt16)153, "153" },
                { (UInt16)154, "154" },
                { (UInt16)155, "155" },
                { (UInt16)156, "156" },
                { (UInt16)157, "157" },
                { (UInt16)158, "158" },
                { (UInt16)159, "159" },
                { (UInt16)160, "160" },
                { (UInt16)161, "161" },
                { (UInt16)162, "162" },
                { (UInt16)163, "163" },
                { (UInt16)164, "164" },
                { (UInt16)165, "165" },
                { (UInt16)166, "166" },
                { (UInt16)167, "167" },
                { (UInt16)168, "168" },
                { (UInt16)169, "169" },
                { (UInt16)170, "170" },
                { (UInt16)171, "171" },
                { (UInt16)172, "172" },
                { (UInt16)173, "173" },
                { (UInt16)174, "174" },
                { (UInt16)175, "175" },
                { (UInt16)176, "176" },
                { (UInt16)177, "177" },
                { (UInt16)178, "178" },
                { (UInt16)179, "179" },
                { (UInt16)180, "180" },
                { (UInt16)181, "181" },
                { (UInt16)182, "182" },
                { (UInt16)183, "183" },
                { (UInt16)184, "184" },
                { (UInt16)185, "185" },
                { (UInt16)186, "186" },
                { (UInt16)187, "187" },
                { (UInt16)188, "188" },
                { (UInt16)189, "189" },
                { (UInt16)190, "190" },
                { (UInt16)191, "191" },
                { (UInt16)192, "192" },
                { (UInt16)193, "193" },
                { (UInt16)194, "194" },
                { (UInt16)195, "195" },
                { (UInt16)196, "196" },
                { (UInt16)197, "197" },
                { (UInt16)198, "198" },
                { (UInt16)199, "199" },
                { (UInt16)200, "200" },
                { (UInt16)201, "201" },
                { (UInt16)202, "202" },
                { (UInt16)203, "203" },
                { (UInt16)204, "204" },
                { (UInt16)205, "205" },
                { (UInt16)206, "206" },
                { (UInt16)207, "207" },
                { (UInt16)208, "208" },
                { (UInt16)209, "209" },
                { (UInt16)210, "210" },
                { (UInt16)211, "211" },
                { (UInt16)212, "212" },
                { (UInt16)213, "213" },
                { (UInt16)214, "214" },
                { (UInt16)215, "215" },
                { (UInt16)216, "216" },
                { (UInt16)217, "217" },
                { (UInt16)218, "218" },
                { (UInt16)219, "219" },
                { (UInt16)220, "220" },
                { (UInt16)221, "221" },
                { (UInt16)222, "222" },
                { (UInt16)223, "223" },
                { (UInt16)224, "224" },
                { (UInt16)225, "225" },
                { (UInt16)226, "226" },
                { (UInt16)227, "227" },
                { (UInt16)228, "228" },
                { (UInt16)229, "229" },
                { (UInt16)230, "230" },
                { (UInt16)231, "231" },
                { (UInt16)232, "232" },
                { (UInt16)233, "233" },
                { (UInt16)234, "234" },
                { (UInt16)235, "235" },
                { (UInt16)236, "236" },
                { (UInt16)237, "237" },
                { (UInt16)238, "238" },
                { (UInt16)239, "239" },
                { (UInt16)240, "240" },
                { (UInt16)241, "241" },
                { (UInt16)242, "242" },
                { (UInt16)243, "243" },
                { (UInt16)244, "244" },
                { (UInt16)245, "245" },
                { (UInt16)246, "246" },
                { (UInt16)247, "247" },
                { (UInt16)248, "248" },
                { (UInt16)249, "249" },
                { (UInt16)250, "250" },
                { (UInt16)251, "251" },
                { (UInt16)252, "252" },
                { (UInt16)253, "253" },
                { (UInt16)254, "254" },
                { (UInt16)255, "255" },
            });
        }

        [TestMethod]
        public void FastSerializer_NullableUInt16()
        {
            AssertSerialize(new Asserts<UInt16?>
            {
                { (UInt16?)null, "null" },
                { (UInt16?)UInt16.MinValue, UInt16.MinValue.ToString() },
                { (UInt16?)UInt16.MaxValue, UInt16.MaxValue.ToString() },
                { (UInt16?)(UInt16.MinValue + 1), ((UInt16)(UInt16.MinValue + 1)).ToString() },
                { (UInt16?)(UInt16.MaxValue - 1), ((UInt16)(UInt16.MaxValue - 1)).ToString() },
                { (UInt16?)0, "0" },
                { (UInt16?)1, "1" },
                { (UInt16?)2, "2" },
                { (UInt16?)3, "3" },
                { (UInt16?)4, "4" },
                { (UInt16?)5, "5" },
                { (UInt16?)6, "6" },
                { (UInt16?)7, "7" },
                { (UInt16?)8, "8" },
                { (UInt16?)9, "9" },
                { (UInt16?)10, "10" },
                { (UInt16?)11, "11" },
                { (UInt16?)12, "12" },
                { (UInt16?)13, "13" },
                { (UInt16?)14, "14" },
                { (UInt16?)15, "15" },
                { (UInt16?)16, "16" },
                { (UInt16?)17, "17" },
                { (UInt16?)18, "18" },
                { (UInt16?)19, "19" },
                { (UInt16?)20, "20" },
                { (UInt16?)21, "21" },
                { (UInt16?)22, "22" },
                { (UInt16?)23, "23" },
                { (UInt16?)24, "24" },
                { (UInt16?)25, "25" },
                { (UInt16?)26, "26" },
                { (UInt16?)27, "27" },
                { (UInt16?)28, "28" },
                { (UInt16?)29, "29" },
                { (UInt16?)30, "30" },
                { (UInt16?)31, "31" },
                { (UInt16?)32, "32" },
                { (UInt16?)33, "33" },
                { (UInt16?)34, "34" },
                { (UInt16?)35, "35" },
                { (UInt16?)36, "36" },
                { (UInt16?)37, "37" },
                { (UInt16?)38, "38" },
                { (UInt16?)39, "39" },
                { (UInt16?)40, "40" },
                { (UInt16?)41, "41" },
                { (UInt16?)42, "42" },
                { (UInt16?)43, "43" },
                { (UInt16?)44, "44" },
                { (UInt16?)45, "45" },
                { (UInt16?)46, "46" },
                { (UInt16?)47, "47" },
                { (UInt16?)48, "48" },
                { (UInt16?)49, "49" },
                { (UInt16?)50, "50" },
                { (UInt16?)51, "51" },
                { (UInt16?)52, "52" },
                { (UInt16?)53, "53" },
                { (UInt16?)54, "54" },
                { (UInt16?)55, "55" },
                { (UInt16?)56, "56" },
                { (UInt16?)57, "57" },
                { (UInt16?)58, "58" },
                { (UInt16?)59, "59" },
                { (UInt16?)60, "60" },
                { (UInt16?)61, "61" },
                { (UInt16?)62, "62" },
                { (UInt16?)63, "63" },
                { (UInt16?)64, "64" },
                { (UInt16?)65, "65" },
                { (UInt16?)66, "66" },
                { (UInt16?)67, "67" },
                { (UInt16?)68, "68" },
                { (UInt16?)69, "69" },
                { (UInt16?)70, "70" },
                { (UInt16?)71, "71" },
                { (UInt16?)72, "72" },
                { (UInt16?)73, "73" },
                { (UInt16?)74, "74" },
                { (UInt16?)75, "75" },
                { (UInt16?)76, "76" },
                { (UInt16?)77, "77" },
                { (UInt16?)78, "78" },
                { (UInt16?)79, "79" },
                { (UInt16?)80, "80" },
                { (UInt16?)81, "81" },
                { (UInt16?)82, "82" },
                { (UInt16?)83, "83" },
                { (UInt16?)84, "84" },
                { (UInt16?)85, "85" },
                { (UInt16?)86, "86" },
                { (UInt16?)87, "87" },
                { (UInt16?)88, "88" },
                { (UInt16?)89, "89" },
                { (UInt16?)90, "90" },
                { (UInt16?)91, "91" },
                { (UInt16?)92, "92" },
                { (UInt16?)93, "93" },
                { (UInt16?)94, "94" },
                { (UInt16?)95, "95" },
                { (UInt16?)96, "96" },
                { (UInt16?)97, "97" },
                { (UInt16?)98, "98" },
                { (UInt16?)99, "99" },
                { (UInt16?)100, "100" },
                { (UInt16?)101, "101" },
                { (UInt16?)102, "102" },
                { (UInt16?)103, "103" },
                { (UInt16?)104, "104" },
                { (UInt16?)105, "105" },
                { (UInt16?)106, "106" },
                { (UInt16?)107, "107" },
                { (UInt16?)108, "108" },
                { (UInt16?)109, "109" },
                { (UInt16?)110, "110" },
                { (UInt16?)111, "111" },
                { (UInt16?)112, "112" },
                { (UInt16?)113, "113" },
                { (UInt16?)114, "114" },
                { (UInt16?)115, "115" },
                { (UInt16?)116, "116" },
                { (UInt16?)117, "117" },
                { (UInt16?)118, "118" },
                { (UInt16?)119, "119" },
                { (UInt16?)120, "120" },
                { (UInt16?)121, "121" },
                { (UInt16?)122, "122" },
                { (UInt16?)123, "123" },
                { (UInt16?)124, "124" },
                { (UInt16?)125, "125" },
                { (UInt16?)126, "126" },
                { (UInt16?)127, "127" },
                { (UInt16?)128, "128" },
                { (UInt16?)129, "129" },
                { (UInt16?)130, "130" },
                { (UInt16?)131, "131" },
                { (UInt16?)132, "132" },
                { (UInt16?)133, "133" },
                { (UInt16?)134, "134" },
                { (UInt16?)135, "135" },
                { (UInt16?)136, "136" },
                { (UInt16?)137, "137" },
                { (UInt16?)138, "138" },
                { (UInt16?)139, "139" },
                { (UInt16?)140, "140" },
                { (UInt16?)141, "141" },
                { (UInt16?)142, "142" },
                { (UInt16?)143, "143" },
                { (UInt16?)144, "144" },
                { (UInt16?)145, "145" },
                { (UInt16?)146, "146" },
                { (UInt16?)147, "147" },
                { (UInt16?)148, "148" },
                { (UInt16?)149, "149" },
                { (UInt16?)150, "150" },
                { (UInt16?)151, "151" },
                { (UInt16?)152, "152" },
                { (UInt16?)153, "153" },
                { (UInt16?)154, "154" },
                { (UInt16?)155, "155" },
                { (UInt16?)156, "156" },
                { (UInt16?)157, "157" },
                { (UInt16?)158, "158" },
                { (UInt16?)159, "159" },
                { (UInt16?)160, "160" },
                { (UInt16?)161, "161" },
                { (UInt16?)162, "162" },
                { (UInt16?)163, "163" },
                { (UInt16?)164, "164" },
                { (UInt16?)165, "165" },
                { (UInt16?)166, "166" },
                { (UInt16?)167, "167" },
                { (UInt16?)168, "168" },
                { (UInt16?)169, "169" },
                { (UInt16?)170, "170" },
                { (UInt16?)171, "171" },
                { (UInt16?)172, "172" },
                { (UInt16?)173, "173" },
                { (UInt16?)174, "174" },
                { (UInt16?)175, "175" },
                { (UInt16?)176, "176" },
                { (UInt16?)177, "177" },
                { (UInt16?)178, "178" },
                { (UInt16?)179, "179" },
                { (UInt16?)180, "180" },
                { (UInt16?)181, "181" },
                { (UInt16?)182, "182" },
                { (UInt16?)183, "183" },
                { (UInt16?)184, "184" },
                { (UInt16?)185, "185" },
                { (UInt16?)186, "186" },
                { (UInt16?)187, "187" },
                { (UInt16?)188, "188" },
                { (UInt16?)189, "189" },
                { (UInt16?)190, "190" },
                { (UInt16?)191, "191" },
                { (UInt16?)192, "192" },
                { (UInt16?)193, "193" },
                { (UInt16?)194, "194" },
                { (UInt16?)195, "195" },
                { (UInt16?)196, "196" },
                { (UInt16?)197, "197" },
                { (UInt16?)198, "198" },
                { (UInt16?)199, "199" },
                { (UInt16?)200, "200" },
                { (UInt16?)201, "201" },
                { (UInt16?)202, "202" },
                { (UInt16?)203, "203" },
                { (UInt16?)204, "204" },
                { (UInt16?)205, "205" },
                { (UInt16?)206, "206" },
                { (UInt16?)207, "207" },
                { (UInt16?)208, "208" },
                { (UInt16?)209, "209" },
                { (UInt16?)210, "210" },
                { (UInt16?)211, "211" },
                { (UInt16?)212, "212" },
                { (UInt16?)213, "213" },
                { (UInt16?)214, "214" },
                { (UInt16?)215, "215" },
                { (UInt16?)216, "216" },
                { (UInt16?)217, "217" },
                { (UInt16?)218, "218" },
                { (UInt16?)219, "219" },
                { (UInt16?)220, "220" },
                { (UInt16?)221, "221" },
                { (UInt16?)222, "222" },
                { (UInt16?)223, "223" },
                { (UInt16?)224, "224" },
                { (UInt16?)225, "225" },
                { (UInt16?)226, "226" },
                { (UInt16?)227, "227" },
                { (UInt16?)228, "228" },
                { (UInt16?)229, "229" },
                { (UInt16?)230, "230" },
                { (UInt16?)231, "231" },
                { (UInt16?)232, "232" },
                { (UInt16?)233, "233" },
                { (UInt16?)234, "234" },
                { (UInt16?)235, "235" },
                { (UInt16?)236, "236" },
                { (UInt16?)237, "237" },
                { (UInt16?)238, "238" },
                { (UInt16?)239, "239" },
                { (UInt16?)240, "240" },
                { (UInt16?)241, "241" },
                { (UInt16?)242, "242" },
                { (UInt16?)243, "243" },
                { (UInt16?)244, "244" },
                { (UInt16?)245, "245" },
                { (UInt16?)246, "246" },
                { (UInt16?)247, "247" },
                { (UInt16?)248, "248" },
                { (UInt16?)249, "249" },
                { (UInt16?)250, "250" },
                { (UInt16?)251, "251" },
                { (UInt16?)252, "252" },
                { (UInt16?)253, "253" },
                { (UInt16?)254, "254" },
                { (UInt16?)255, "255" },
            });
        }

        [TestMethod]
        public void FastSerializer_UInt32()
        {
            AssertSerialize(new Asserts<UInt32>
            {
                { (UInt32)UInt32.MinValue, UInt32.MinValue.ToString() },
                { (UInt32)UInt32.MaxValue, UInt32.MaxValue.ToString() },
                { (UInt32)(UInt32.MinValue + 1), ((UInt32)(UInt32.MinValue + 1)).ToString() },
                { (UInt32)(UInt32.MaxValue - 1), ((UInt32)(UInt32.MaxValue - 1)).ToString() },
                { (UInt32)0, "0" },
                { (UInt32)1, "1" },
                { (UInt32)2, "2" },
                { (UInt32)3, "3" },
                { (UInt32)4, "4" },
                { (UInt32)5, "5" },
                { (UInt32)6, "6" },
                { (UInt32)7, "7" },
                { (UInt32)8, "8" },
                { (UInt32)9, "9" },
                { (UInt32)10, "10" },
                { (UInt32)11, "11" },
                { (UInt32)12, "12" },
                { (UInt32)13, "13" },
                { (UInt32)14, "14" },
                { (UInt32)15, "15" },
                { (UInt32)16, "16" },
                { (UInt32)17, "17" },
                { (UInt32)18, "18" },
                { (UInt32)19, "19" },
                { (UInt32)20, "20" },
                { (UInt32)21, "21" },
                { (UInt32)22, "22" },
                { (UInt32)23, "23" },
                { (UInt32)24, "24" },
                { (UInt32)25, "25" },
                { (UInt32)26, "26" },
                { (UInt32)27, "27" },
                { (UInt32)28, "28" },
                { (UInt32)29, "29" },
                { (UInt32)30, "30" },
                { (UInt32)31, "31" },
                { (UInt32)32, "32" },
                { (UInt32)33, "33" },
                { (UInt32)34, "34" },
                { (UInt32)35, "35" },
                { (UInt32)36, "36" },
                { (UInt32)37, "37" },
                { (UInt32)38, "38" },
                { (UInt32)39, "39" },
                { (UInt32)40, "40" },
                { (UInt32)41, "41" },
                { (UInt32)42, "42" },
                { (UInt32)43, "43" },
                { (UInt32)44, "44" },
                { (UInt32)45, "45" },
                { (UInt32)46, "46" },
                { (UInt32)47, "47" },
                { (UInt32)48, "48" },
                { (UInt32)49, "49" },
                { (UInt32)50, "50" },
                { (UInt32)51, "51" },
                { (UInt32)52, "52" },
                { (UInt32)53, "53" },
                { (UInt32)54, "54" },
                { (UInt32)55, "55" },
                { (UInt32)56, "56" },
                { (UInt32)57, "57" },
                { (UInt32)58, "58" },
                { (UInt32)59, "59" },
                { (UInt32)60, "60" },
                { (UInt32)61, "61" },
                { (UInt32)62, "62" },
                { (UInt32)63, "63" },
                { (UInt32)64, "64" },
                { (UInt32)65, "65" },
                { (UInt32)66, "66" },
                { (UInt32)67, "67" },
                { (UInt32)68, "68" },
                { (UInt32)69, "69" },
                { (UInt32)70, "70" },
                { (UInt32)71, "71" },
                { (UInt32)72, "72" },
                { (UInt32)73, "73" },
                { (UInt32)74, "74" },
                { (UInt32)75, "75" },
                { (UInt32)76, "76" },
                { (UInt32)77, "77" },
                { (UInt32)78, "78" },
                { (UInt32)79, "79" },
                { (UInt32)80, "80" },
                { (UInt32)81, "81" },
                { (UInt32)82, "82" },
                { (UInt32)83, "83" },
                { (UInt32)84, "84" },
                { (UInt32)85, "85" },
                { (UInt32)86, "86" },
                { (UInt32)87, "87" },
                { (UInt32)88, "88" },
                { (UInt32)89, "89" },
                { (UInt32)90, "90" },
                { (UInt32)91, "91" },
                { (UInt32)92, "92" },
                { (UInt32)93, "93" },
                { (UInt32)94, "94" },
                { (UInt32)95, "95" },
                { (UInt32)96, "96" },
                { (UInt32)97, "97" },
                { (UInt32)98, "98" },
                { (UInt32)99, "99" },
                { (UInt32)100, "100" },
                { (UInt32)101, "101" },
                { (UInt32)102, "102" },
                { (UInt32)103, "103" },
                { (UInt32)104, "104" },
                { (UInt32)105, "105" },
                { (UInt32)106, "106" },
                { (UInt32)107, "107" },
                { (UInt32)108, "108" },
                { (UInt32)109, "109" },
                { (UInt32)110, "110" },
                { (UInt32)111, "111" },
                { (UInt32)112, "112" },
                { (UInt32)113, "113" },
                { (UInt32)114, "114" },
                { (UInt32)115, "115" },
                { (UInt32)116, "116" },
                { (UInt32)117, "117" },
                { (UInt32)118, "118" },
                { (UInt32)119, "119" },
                { (UInt32)120, "120" },
                { (UInt32)121, "121" },
                { (UInt32)122, "122" },
                { (UInt32)123, "123" },
                { (UInt32)124, "124" },
                { (UInt32)125, "125" },
                { (UInt32)126, "126" },
                { (UInt32)127, "127" },
                { (UInt32)128, "128" },
                { (UInt32)129, "129" },
                { (UInt32)130, "130" },
                { (UInt32)131, "131" },
                { (UInt32)132, "132" },
                { (UInt32)133, "133" },
                { (UInt32)134, "134" },
                { (UInt32)135, "135" },
                { (UInt32)136, "136" },
                { (UInt32)137, "137" },
                { (UInt32)138, "138" },
                { (UInt32)139, "139" },
                { (UInt32)140, "140" },
                { (UInt32)141, "141" },
                { (UInt32)142, "142" },
                { (UInt32)143, "143" },
                { (UInt32)144, "144" },
                { (UInt32)145, "145" },
                { (UInt32)146, "146" },
                { (UInt32)147, "147" },
                { (UInt32)148, "148" },
                { (UInt32)149, "149" },
                { (UInt32)150, "150" },
                { (UInt32)151, "151" },
                { (UInt32)152, "152" },
                { (UInt32)153, "153" },
                { (UInt32)154, "154" },
                { (UInt32)155, "155" },
                { (UInt32)156, "156" },
                { (UInt32)157, "157" },
                { (UInt32)158, "158" },
                { (UInt32)159, "159" },
                { (UInt32)160, "160" },
                { (UInt32)161, "161" },
                { (UInt32)162, "162" },
                { (UInt32)163, "163" },
                { (UInt32)164, "164" },
                { (UInt32)165, "165" },
                { (UInt32)166, "166" },
                { (UInt32)167, "167" },
                { (UInt32)168, "168" },
                { (UInt32)169, "169" },
                { (UInt32)170, "170" },
                { (UInt32)171, "171" },
                { (UInt32)172, "172" },
                { (UInt32)173, "173" },
                { (UInt32)174, "174" },
                { (UInt32)175, "175" },
                { (UInt32)176, "176" },
                { (UInt32)177, "177" },
                { (UInt32)178, "178" },
                { (UInt32)179, "179" },
                { (UInt32)180, "180" },
                { (UInt32)181, "181" },
                { (UInt32)182, "182" },
                { (UInt32)183, "183" },
                { (UInt32)184, "184" },
                { (UInt32)185, "185" },
                { (UInt32)186, "186" },
                { (UInt32)187, "187" },
                { (UInt32)188, "188" },
                { (UInt32)189, "189" },
                { (UInt32)190, "190" },
                { (UInt32)191, "191" },
                { (UInt32)192, "192" },
                { (UInt32)193, "193" },
                { (UInt32)194, "194" },
                { (UInt32)195, "195" },
                { (UInt32)196, "196" },
                { (UInt32)197, "197" },
                { (UInt32)198, "198" },
                { (UInt32)199, "199" },
                { (UInt32)200, "200" },
                { (UInt32)201, "201" },
                { (UInt32)202, "202" },
                { (UInt32)203, "203" },
                { (UInt32)204, "204" },
                { (UInt32)205, "205" },
                { (UInt32)206, "206" },
                { (UInt32)207, "207" },
                { (UInt32)208, "208" },
                { (UInt32)209, "209" },
                { (UInt32)210, "210" },
                { (UInt32)211, "211" },
                { (UInt32)212, "212" },
                { (UInt32)213, "213" },
                { (UInt32)214, "214" },
                { (UInt32)215, "215" },
                { (UInt32)216, "216" },
                { (UInt32)217, "217" },
                { (UInt32)218, "218" },
                { (UInt32)219, "219" },
                { (UInt32)220, "220" },
                { (UInt32)221, "221" },
                { (UInt32)222, "222" },
                { (UInt32)223, "223" },
                { (UInt32)224, "224" },
                { (UInt32)225, "225" },
                { (UInt32)226, "226" },
                { (UInt32)227, "227" },
                { (UInt32)228, "228" },
                { (UInt32)229, "229" },
                { (UInt32)230, "230" },
                { (UInt32)231, "231" },
                { (UInt32)232, "232" },
                { (UInt32)233, "233" },
                { (UInt32)234, "234" },
                { (UInt32)235, "235" },
                { (UInt32)236, "236" },
                { (UInt32)237, "237" },
                { (UInt32)238, "238" },
                { (UInt32)239, "239" },
                { (UInt32)240, "240" },
                { (UInt32)241, "241" },
                { (UInt32)242, "242" },
                { (UInt32)243, "243" },
                { (UInt32)244, "244" },
                { (UInt32)245, "245" },
                { (UInt32)246, "246" },
                { (UInt32)247, "247" },
                { (UInt32)248, "248" },
                { (UInt32)249, "249" },
                { (UInt32)250, "250" },
                { (UInt32)251, "251" },
                { (UInt32)252, "252" },
                { (UInt32)253, "253" },
                { (UInt32)254, "254" },
                { (UInt32)255, "255" },
            });
        }

        [TestMethod]
        public void FastSerializer_NullableUInt32()
        {
            AssertSerialize(new Asserts<UInt32?>
            {
                { (UInt32?)null, "null" },
                { (UInt32?)UInt32.MinValue, UInt32.MinValue.ToString() },
                { (UInt32?)UInt32.MaxValue, UInt32.MaxValue.ToString() },
                { (UInt32?)(UInt32.MinValue + 1), ((UInt32)(UInt32.MinValue + 1)).ToString() },
                { (UInt32?)(UInt32.MaxValue - 1), ((UInt32)(UInt32.MaxValue - 1)).ToString() },
                { (UInt32?)0, "0" },
                { (UInt32?)1, "1" },
                { (UInt32?)2, "2" },
                { (UInt32?)3, "3" },
                { (UInt32?)4, "4" },
                { (UInt32?)5, "5" },
                { (UInt32?)6, "6" },
                { (UInt32?)7, "7" },
                { (UInt32?)8, "8" },
                { (UInt32?)9, "9" },
                { (UInt32?)10, "10" },
                { (UInt32?)11, "11" },
                { (UInt32?)12, "12" },
                { (UInt32?)13, "13" },
                { (UInt32?)14, "14" },
                { (UInt32?)15, "15" },
                { (UInt32?)16, "16" },
                { (UInt32?)17, "17" },
                { (UInt32?)18, "18" },
                { (UInt32?)19, "19" },
                { (UInt32?)20, "20" },
                { (UInt32?)21, "21" },
                { (UInt32?)22, "22" },
                { (UInt32?)23, "23" },
                { (UInt32?)24, "24" },
                { (UInt32?)25, "25" },
                { (UInt32?)26, "26" },
                { (UInt32?)27, "27" },
                { (UInt32?)28, "28" },
                { (UInt32?)29, "29" },
                { (UInt32?)30, "30" },
                { (UInt32?)31, "31" },
                { (UInt32?)32, "32" },
                { (UInt32?)33, "33" },
                { (UInt32?)34, "34" },
                { (UInt32?)35, "35" },
                { (UInt32?)36, "36" },
                { (UInt32?)37, "37" },
                { (UInt32?)38, "38" },
                { (UInt32?)39, "39" },
                { (UInt32?)40, "40" },
                { (UInt32?)41, "41" },
                { (UInt32?)42, "42" },
                { (UInt32?)43, "43" },
                { (UInt32?)44, "44" },
                { (UInt32?)45, "45" },
                { (UInt32?)46, "46" },
                { (UInt32?)47, "47" },
                { (UInt32?)48, "48" },
                { (UInt32?)49, "49" },
                { (UInt32?)50, "50" },
                { (UInt32?)51, "51" },
                { (UInt32?)52, "52" },
                { (UInt32?)53, "53" },
                { (UInt32?)54, "54" },
                { (UInt32?)55, "55" },
                { (UInt32?)56, "56" },
                { (UInt32?)57, "57" },
                { (UInt32?)58, "58" },
                { (UInt32?)59, "59" },
                { (UInt32?)60, "60" },
                { (UInt32?)61, "61" },
                { (UInt32?)62, "62" },
                { (UInt32?)63, "63" },
                { (UInt32?)64, "64" },
                { (UInt32?)65, "65" },
                { (UInt32?)66, "66" },
                { (UInt32?)67, "67" },
                { (UInt32?)68, "68" },
                { (UInt32?)69, "69" },
                { (UInt32?)70, "70" },
                { (UInt32?)71, "71" },
                { (UInt32?)72, "72" },
                { (UInt32?)73, "73" },
                { (UInt32?)74, "74" },
                { (UInt32?)75, "75" },
                { (UInt32?)76, "76" },
                { (UInt32?)77, "77" },
                { (UInt32?)78, "78" },
                { (UInt32?)79, "79" },
                { (UInt32?)80, "80" },
                { (UInt32?)81, "81" },
                { (UInt32?)82, "82" },
                { (UInt32?)83, "83" },
                { (UInt32?)84, "84" },
                { (UInt32?)85, "85" },
                { (UInt32?)86, "86" },
                { (UInt32?)87, "87" },
                { (UInt32?)88, "88" },
                { (UInt32?)89, "89" },
                { (UInt32?)90, "90" },
                { (UInt32?)91, "91" },
                { (UInt32?)92, "92" },
                { (UInt32?)93, "93" },
                { (UInt32?)94, "94" },
                { (UInt32?)95, "95" },
                { (UInt32?)96, "96" },
                { (UInt32?)97, "97" },
                { (UInt32?)98, "98" },
                { (UInt32?)99, "99" },
                { (UInt32?)100, "100" },
                { (UInt32?)101, "101" },
                { (UInt32?)102, "102" },
                { (UInt32?)103, "103" },
                { (UInt32?)104, "104" },
                { (UInt32?)105, "105" },
                { (UInt32?)106, "106" },
                { (UInt32?)107, "107" },
                { (UInt32?)108, "108" },
                { (UInt32?)109, "109" },
                { (UInt32?)110, "110" },
                { (UInt32?)111, "111" },
                { (UInt32?)112, "112" },
                { (UInt32?)113, "113" },
                { (UInt32?)114, "114" },
                { (UInt32?)115, "115" },
                { (UInt32?)116, "116" },
                { (UInt32?)117, "117" },
                { (UInt32?)118, "118" },
                { (UInt32?)119, "119" },
                { (UInt32?)120, "120" },
                { (UInt32?)121, "121" },
                { (UInt32?)122, "122" },
                { (UInt32?)123, "123" },
                { (UInt32?)124, "124" },
                { (UInt32?)125, "125" },
                { (UInt32?)126, "126" },
                { (UInt32?)127, "127" },
                { (UInt32?)128, "128" },
                { (UInt32?)129, "129" },
                { (UInt32?)130, "130" },
                { (UInt32?)131, "131" },
                { (UInt32?)132, "132" },
                { (UInt32?)133, "133" },
                { (UInt32?)134, "134" },
                { (UInt32?)135, "135" },
                { (UInt32?)136, "136" },
                { (UInt32?)137, "137" },
                { (UInt32?)138, "138" },
                { (UInt32?)139, "139" },
                { (UInt32?)140, "140" },
                { (UInt32?)141, "141" },
                { (UInt32?)142, "142" },
                { (UInt32?)143, "143" },
                { (UInt32?)144, "144" },
                { (UInt32?)145, "145" },
                { (UInt32?)146, "146" },
                { (UInt32?)147, "147" },
                { (UInt32?)148, "148" },
                { (UInt32?)149, "149" },
                { (UInt32?)150, "150" },
                { (UInt32?)151, "151" },
                { (UInt32?)152, "152" },
                { (UInt32?)153, "153" },
                { (UInt32?)154, "154" },
                { (UInt32?)155, "155" },
                { (UInt32?)156, "156" },
                { (UInt32?)157, "157" },
                { (UInt32?)158, "158" },
                { (UInt32?)159, "159" },
                { (UInt32?)160, "160" },
                { (UInt32?)161, "161" },
                { (UInt32?)162, "162" },
                { (UInt32?)163, "163" },
                { (UInt32?)164, "164" },
                { (UInt32?)165, "165" },
                { (UInt32?)166, "166" },
                { (UInt32?)167, "167" },
                { (UInt32?)168, "168" },
                { (UInt32?)169, "169" },
                { (UInt32?)170, "170" },
                { (UInt32?)171, "171" },
                { (UInt32?)172, "172" },
                { (UInt32?)173, "173" },
                { (UInt32?)174, "174" },
                { (UInt32?)175, "175" },
                { (UInt32?)176, "176" },
                { (UInt32?)177, "177" },
                { (UInt32?)178, "178" },
                { (UInt32?)179, "179" },
                { (UInt32?)180, "180" },
                { (UInt32?)181, "181" },
                { (UInt32?)182, "182" },
                { (UInt32?)183, "183" },
                { (UInt32?)184, "184" },
                { (UInt32?)185, "185" },
                { (UInt32?)186, "186" },
                { (UInt32?)187, "187" },
                { (UInt32?)188, "188" },
                { (UInt32?)189, "189" },
                { (UInt32?)190, "190" },
                { (UInt32?)191, "191" },
                { (UInt32?)192, "192" },
                { (UInt32?)193, "193" },
                { (UInt32?)194, "194" },
                { (UInt32?)195, "195" },
                { (UInt32?)196, "196" },
                { (UInt32?)197, "197" },
                { (UInt32?)198, "198" },
                { (UInt32?)199, "199" },
                { (UInt32?)200, "200" },
                { (UInt32?)201, "201" },
                { (UInt32?)202, "202" },
                { (UInt32?)203, "203" },
                { (UInt32?)204, "204" },
                { (UInt32?)205, "205" },
                { (UInt32?)206, "206" },
                { (UInt32?)207, "207" },
                { (UInt32?)208, "208" },
                { (UInt32?)209, "209" },
                { (UInt32?)210, "210" },
                { (UInt32?)211, "211" },
                { (UInt32?)212, "212" },
                { (UInt32?)213, "213" },
                { (UInt32?)214, "214" },
                { (UInt32?)215, "215" },
                { (UInt32?)216, "216" },
                { (UInt32?)217, "217" },
                { (UInt32?)218, "218" },
                { (UInt32?)219, "219" },
                { (UInt32?)220, "220" },
                { (UInt32?)221, "221" },
                { (UInt32?)222, "222" },
                { (UInt32?)223, "223" },
                { (UInt32?)224, "224" },
                { (UInt32?)225, "225" },
                { (UInt32?)226, "226" },
                { (UInt32?)227, "227" },
                { (UInt32?)228, "228" },
                { (UInt32?)229, "229" },
                { (UInt32?)230, "230" },
                { (UInt32?)231, "231" },
                { (UInt32?)232, "232" },
                { (UInt32?)233, "233" },
                { (UInt32?)234, "234" },
                { (UInt32?)235, "235" },
                { (UInt32?)236, "236" },
                { (UInt32?)237, "237" },
                { (UInt32?)238, "238" },
                { (UInt32?)239, "239" },
                { (UInt32?)240, "240" },
                { (UInt32?)241, "241" },
                { (UInt32?)242, "242" },
                { (UInt32?)243, "243" },
                { (UInt32?)244, "244" },
                { (UInt32?)245, "245" },
                { (UInt32?)246, "246" },
                { (UInt32?)247, "247" },
                { (UInt32?)248, "248" },
                { (UInt32?)249, "249" },
                { (UInt32?)250, "250" },
                { (UInt32?)251, "251" },
                { (UInt32?)252, "252" },
                { (UInt32?)253, "253" },
                { (UInt32?)254, "254" },
                { (UInt32?)255, "255" },
            });
        }

        [TestMethod]
        public void FastSerializer_UInt64()
        {
            AssertSerialize(new Asserts<UInt64>
            {
                { (UInt64)UInt64.MinValue, UInt64.MinValue.ToString() },
                { (UInt64)UInt64.MaxValue, UInt64.MaxValue.ToString() },
                { (UInt64)(UInt64.MinValue + 1), ((UInt64)(UInt64.MinValue + 1)).ToString() },
                { (UInt64)(UInt64.MaxValue - 1), ((UInt64)(UInt64.MaxValue - 1)).ToString() },
                { (UInt64)0, "0" },
                { (UInt64)1, "1" },
                { (UInt64)2, "2" },
                { (UInt64)3, "3" },
                { (UInt64)4, "4" },
                { (UInt64)5, "5" },
                { (UInt64)6, "6" },
                { (UInt64)7, "7" },
                { (UInt64)8, "8" },
                { (UInt64)9, "9" },
                { (UInt64)10, "10" },
                { (UInt64)11, "11" },
                { (UInt64)12, "12" },
                { (UInt64)13, "13" },
                { (UInt64)14, "14" },
                { (UInt64)15, "15" },
                { (UInt64)16, "16" },
                { (UInt64)17, "17" },
                { (UInt64)18, "18" },
                { (UInt64)19, "19" },
                { (UInt64)20, "20" },
                { (UInt64)21, "21" },
                { (UInt64)22, "22" },
                { (UInt64)23, "23" },
                { (UInt64)24, "24" },
                { (UInt64)25, "25" },
                { (UInt64)26, "26" },
                { (UInt64)27, "27" },
                { (UInt64)28, "28" },
                { (UInt64)29, "29" },
                { (UInt64)30, "30" },
                { (UInt64)31, "31" },
                { (UInt64)32, "32" },
                { (UInt64)33, "33" },
                { (UInt64)34, "34" },
                { (UInt64)35, "35" },
                { (UInt64)36, "36" },
                { (UInt64)37, "37" },
                { (UInt64)38, "38" },
                { (UInt64)39, "39" },
                { (UInt64)40, "40" },
                { (UInt64)41, "41" },
                { (UInt64)42, "42" },
                { (UInt64)43, "43" },
                { (UInt64)44, "44" },
                { (UInt64)45, "45" },
                { (UInt64)46, "46" },
                { (UInt64)47, "47" },
                { (UInt64)48, "48" },
                { (UInt64)49, "49" },
                { (UInt64)50, "50" },
                { (UInt64)51, "51" },
                { (UInt64)52, "52" },
                { (UInt64)53, "53" },
                { (UInt64)54, "54" },
                { (UInt64)55, "55" },
                { (UInt64)56, "56" },
                { (UInt64)57, "57" },
                { (UInt64)58, "58" },
                { (UInt64)59, "59" },
                { (UInt64)60, "60" },
                { (UInt64)61, "61" },
                { (UInt64)62, "62" },
                { (UInt64)63, "63" },
                { (UInt64)64, "64" },
                { (UInt64)65, "65" },
                { (UInt64)66, "66" },
                { (UInt64)67, "67" },
                { (UInt64)68, "68" },
                { (UInt64)69, "69" },
                { (UInt64)70, "70" },
                { (UInt64)71, "71" },
                { (UInt64)72, "72" },
                { (UInt64)73, "73" },
                { (UInt64)74, "74" },
                { (UInt64)75, "75" },
                { (UInt64)76, "76" },
                { (UInt64)77, "77" },
                { (UInt64)78, "78" },
                { (UInt64)79, "79" },
                { (UInt64)80, "80" },
                { (UInt64)81, "81" },
                { (UInt64)82, "82" },
                { (UInt64)83, "83" },
                { (UInt64)84, "84" },
                { (UInt64)85, "85" },
                { (UInt64)86, "86" },
                { (UInt64)87, "87" },
                { (UInt64)88, "88" },
                { (UInt64)89, "89" },
                { (UInt64)90, "90" },
                { (UInt64)91, "91" },
                { (UInt64)92, "92" },
                { (UInt64)93, "93" },
                { (UInt64)94, "94" },
                { (UInt64)95, "95" },
                { (UInt64)96, "96" },
                { (UInt64)97, "97" },
                { (UInt64)98, "98" },
                { (UInt64)99, "99" },
                { (UInt64)100, "100" },
                { (UInt64)101, "101" },
                { (UInt64)102, "102" },
                { (UInt64)103, "103" },
                { (UInt64)104, "104" },
                { (UInt64)105, "105" },
                { (UInt64)106, "106" },
                { (UInt64)107, "107" },
                { (UInt64)108, "108" },
                { (UInt64)109, "109" },
                { (UInt64)110, "110" },
                { (UInt64)111, "111" },
                { (UInt64)112, "112" },
                { (UInt64)113, "113" },
                { (UInt64)114, "114" },
                { (UInt64)115, "115" },
                { (UInt64)116, "116" },
                { (UInt64)117, "117" },
                { (UInt64)118, "118" },
                { (UInt64)119, "119" },
                { (UInt64)120, "120" },
                { (UInt64)121, "121" },
                { (UInt64)122, "122" },
                { (UInt64)123, "123" },
                { (UInt64)124, "124" },
                { (UInt64)125, "125" },
                { (UInt64)126, "126" },
                { (UInt64)127, "127" },
                { (UInt64)128, "128" },
                { (UInt64)129, "129" },
                { (UInt64)130, "130" },
                { (UInt64)131, "131" },
                { (UInt64)132, "132" },
                { (UInt64)133, "133" },
                { (UInt64)134, "134" },
                { (UInt64)135, "135" },
                { (UInt64)136, "136" },
                { (UInt64)137, "137" },
                { (UInt64)138, "138" },
                { (UInt64)139, "139" },
                { (UInt64)140, "140" },
                { (UInt64)141, "141" },
                { (UInt64)142, "142" },
                { (UInt64)143, "143" },
                { (UInt64)144, "144" },
                { (UInt64)145, "145" },
                { (UInt64)146, "146" },
                { (UInt64)147, "147" },
                { (UInt64)148, "148" },
                { (UInt64)149, "149" },
                { (UInt64)150, "150" },
                { (UInt64)151, "151" },
                { (UInt64)152, "152" },
                { (UInt64)153, "153" },
                { (UInt64)154, "154" },
                { (UInt64)155, "155" },
                { (UInt64)156, "156" },
                { (UInt64)157, "157" },
                { (UInt64)158, "158" },
                { (UInt64)159, "159" },
                { (UInt64)160, "160" },
                { (UInt64)161, "161" },
                { (UInt64)162, "162" },
                { (UInt64)163, "163" },
                { (UInt64)164, "164" },
                { (UInt64)165, "165" },
                { (UInt64)166, "166" },
                { (UInt64)167, "167" },
                { (UInt64)168, "168" },
                { (UInt64)169, "169" },
                { (UInt64)170, "170" },
                { (UInt64)171, "171" },
                { (UInt64)172, "172" },
                { (UInt64)173, "173" },
                { (UInt64)174, "174" },
                { (UInt64)175, "175" },
                { (UInt64)176, "176" },
                { (UInt64)177, "177" },
                { (UInt64)178, "178" },
                { (UInt64)179, "179" },
                { (UInt64)180, "180" },
                { (UInt64)181, "181" },
                { (UInt64)182, "182" },
                { (UInt64)183, "183" },
                { (UInt64)184, "184" },
                { (UInt64)185, "185" },
                { (UInt64)186, "186" },
                { (UInt64)187, "187" },
                { (UInt64)188, "188" },
                { (UInt64)189, "189" },
                { (UInt64)190, "190" },
                { (UInt64)191, "191" },
                { (UInt64)192, "192" },
                { (UInt64)193, "193" },
                { (UInt64)194, "194" },
                { (UInt64)195, "195" },
                { (UInt64)196, "196" },
                { (UInt64)197, "197" },
                { (UInt64)198, "198" },
                { (UInt64)199, "199" },
                { (UInt64)200, "200" },
                { (UInt64)201, "201" },
                { (UInt64)202, "202" },
                { (UInt64)203, "203" },
                { (UInt64)204, "204" },
                { (UInt64)205, "205" },
                { (UInt64)206, "206" },
                { (UInt64)207, "207" },
                { (UInt64)208, "208" },
                { (UInt64)209, "209" },
                { (UInt64)210, "210" },
                { (UInt64)211, "211" },
                { (UInt64)212, "212" },
                { (UInt64)213, "213" },
                { (UInt64)214, "214" },
                { (UInt64)215, "215" },
                { (UInt64)216, "216" },
                { (UInt64)217, "217" },
                { (UInt64)218, "218" },
                { (UInt64)219, "219" },
                { (UInt64)220, "220" },
                { (UInt64)221, "221" },
                { (UInt64)222, "222" },
                { (UInt64)223, "223" },
                { (UInt64)224, "224" },
                { (UInt64)225, "225" },
                { (UInt64)226, "226" },
                { (UInt64)227, "227" },
                { (UInt64)228, "228" },
                { (UInt64)229, "229" },
                { (UInt64)230, "230" },
                { (UInt64)231, "231" },
                { (UInt64)232, "232" },
                { (UInt64)233, "233" },
                { (UInt64)234, "234" },
                { (UInt64)235, "235" },
                { (UInt64)236, "236" },
                { (UInt64)237, "237" },
                { (UInt64)238, "238" },
                { (UInt64)239, "239" },
                { (UInt64)240, "240" },
                { (UInt64)241, "241" },
                { (UInt64)242, "242" },
                { (UInt64)243, "243" },
                { (UInt64)244, "244" },
                { (UInt64)245, "245" },
                { (UInt64)246, "246" },
                { (UInt64)247, "247" },
                { (UInt64)248, "248" },
                { (UInt64)249, "249" },
                { (UInt64)250, "250" },
                { (UInt64)251, "251" },
                { (UInt64)252, "252" },
                { (UInt64)253, "253" },
                { (UInt64)254, "254" },
                { (UInt64)255, "255" },
            });
        }

        [TestMethod]
        public void FastSerializer_NullableUInt64()
        {
            AssertSerialize(new Asserts<UInt64?>
            {
                { (UInt64?)null, "null" },
                { (UInt64?)UInt64.MinValue, UInt64.MinValue.ToString() },
                { (UInt64?)UInt64.MaxValue, UInt64.MaxValue.ToString() },
                { (UInt64?)(UInt64.MinValue + 1), ((UInt64)(UInt64.MinValue + 1)).ToString() },
                { (UInt64?)(UInt64.MaxValue - 1), ((UInt64)(UInt64.MaxValue - 1)).ToString() },
                { (UInt64?)0, "0" },
                { (UInt64?)1, "1" },
                { (UInt64?)2, "2" },
                { (UInt64?)3, "3" },
                { (UInt64?)4, "4" },
                { (UInt64?)5, "5" },
                { (UInt64?)6, "6" },
                { (UInt64?)7, "7" },
                { (UInt64?)8, "8" },
                { (UInt64?)9, "9" },
                { (UInt64?)10, "10" },
                { (UInt64?)11, "11" },
                { (UInt64?)12, "12" },
                { (UInt64?)13, "13" },
                { (UInt64?)14, "14" },
                { (UInt64?)15, "15" },
                { (UInt64?)16, "16" },
                { (UInt64?)17, "17" },
                { (UInt64?)18, "18" },
                { (UInt64?)19, "19" },
                { (UInt64?)20, "20" },
                { (UInt64?)21, "21" },
                { (UInt64?)22, "22" },
                { (UInt64?)23, "23" },
                { (UInt64?)24, "24" },
                { (UInt64?)25, "25" },
                { (UInt64?)26, "26" },
                { (UInt64?)27, "27" },
                { (UInt64?)28, "28" },
                { (UInt64?)29, "29" },
                { (UInt64?)30, "30" },
                { (UInt64?)31, "31" },
                { (UInt64?)32, "32" },
                { (UInt64?)33, "33" },
                { (UInt64?)34, "34" },
                { (UInt64?)35, "35" },
                { (UInt64?)36, "36" },
                { (UInt64?)37, "37" },
                { (UInt64?)38, "38" },
                { (UInt64?)39, "39" },
                { (UInt64?)40, "40" },
                { (UInt64?)41, "41" },
                { (UInt64?)42, "42" },
                { (UInt64?)43, "43" },
                { (UInt64?)44, "44" },
                { (UInt64?)45, "45" },
                { (UInt64?)46, "46" },
                { (UInt64?)47, "47" },
                { (UInt64?)48, "48" },
                { (UInt64?)49, "49" },
                { (UInt64?)50, "50" },
                { (UInt64?)51, "51" },
                { (UInt64?)52, "52" },
                { (UInt64?)53, "53" },
                { (UInt64?)54, "54" },
                { (UInt64?)55, "55" },
                { (UInt64?)56, "56" },
                { (UInt64?)57, "57" },
                { (UInt64?)58, "58" },
                { (UInt64?)59, "59" },
                { (UInt64?)60, "60" },
                { (UInt64?)61, "61" },
                { (UInt64?)62, "62" },
                { (UInt64?)63, "63" },
                { (UInt64?)64, "64" },
                { (UInt64?)65, "65" },
                { (UInt64?)66, "66" },
                { (UInt64?)67, "67" },
                { (UInt64?)68, "68" },
                { (UInt64?)69, "69" },
                { (UInt64?)70, "70" },
                { (UInt64?)71, "71" },
                { (UInt64?)72, "72" },
                { (UInt64?)73, "73" },
                { (UInt64?)74, "74" },
                { (UInt64?)75, "75" },
                { (UInt64?)76, "76" },
                { (UInt64?)77, "77" },
                { (UInt64?)78, "78" },
                { (UInt64?)79, "79" },
                { (UInt64?)80, "80" },
                { (UInt64?)81, "81" },
                { (UInt64?)82, "82" },
                { (UInt64?)83, "83" },
                { (UInt64?)84, "84" },
                { (UInt64?)85, "85" },
                { (UInt64?)86, "86" },
                { (UInt64?)87, "87" },
                { (UInt64?)88, "88" },
                { (UInt64?)89, "89" },
                { (UInt64?)90, "90" },
                { (UInt64?)91, "91" },
                { (UInt64?)92, "92" },
                { (UInt64?)93, "93" },
                { (UInt64?)94, "94" },
                { (UInt64?)95, "95" },
                { (UInt64?)96, "96" },
                { (UInt64?)97, "97" },
                { (UInt64?)98, "98" },
                { (UInt64?)99, "99" },
                { (UInt64?)100, "100" },
                { (UInt64?)101, "101" },
                { (UInt64?)102, "102" },
                { (UInt64?)103, "103" },
                { (UInt64?)104, "104" },
                { (UInt64?)105, "105" },
                { (UInt64?)106, "106" },
                { (UInt64?)107, "107" },
                { (UInt64?)108, "108" },
                { (UInt64?)109, "109" },
                { (UInt64?)110, "110" },
                { (UInt64?)111, "111" },
                { (UInt64?)112, "112" },
                { (UInt64?)113, "113" },
                { (UInt64?)114, "114" },
                { (UInt64?)115, "115" },
                { (UInt64?)116, "116" },
                { (UInt64?)117, "117" },
                { (UInt64?)118, "118" },
                { (UInt64?)119, "119" },
                { (UInt64?)120, "120" },
                { (UInt64?)121, "121" },
                { (UInt64?)122, "122" },
                { (UInt64?)123, "123" },
                { (UInt64?)124, "124" },
                { (UInt64?)125, "125" },
                { (UInt64?)126, "126" },
                { (UInt64?)127, "127" },
                { (UInt64?)128, "128" },
                { (UInt64?)129, "129" },
                { (UInt64?)130, "130" },
                { (UInt64?)131, "131" },
                { (UInt64?)132, "132" },
                { (UInt64?)133, "133" },
                { (UInt64?)134, "134" },
                { (UInt64?)135, "135" },
                { (UInt64?)136, "136" },
                { (UInt64?)137, "137" },
                { (UInt64?)138, "138" },
                { (UInt64?)139, "139" },
                { (UInt64?)140, "140" },
                { (UInt64?)141, "141" },
                { (UInt64?)142, "142" },
                { (UInt64?)143, "143" },
                { (UInt64?)144, "144" },
                { (UInt64?)145, "145" },
                { (UInt64?)146, "146" },
                { (UInt64?)147, "147" },
                { (UInt64?)148, "148" },
                { (UInt64?)149, "149" },
                { (UInt64?)150, "150" },
                { (UInt64?)151, "151" },
                { (UInt64?)152, "152" },
                { (UInt64?)153, "153" },
                { (UInt64?)154, "154" },
                { (UInt64?)155, "155" },
                { (UInt64?)156, "156" },
                { (UInt64?)157, "157" },
                { (UInt64?)158, "158" },
                { (UInt64?)159, "159" },
                { (UInt64?)160, "160" },
                { (UInt64?)161, "161" },
                { (UInt64?)162, "162" },
                { (UInt64?)163, "163" },
                { (UInt64?)164, "164" },
                { (UInt64?)165, "165" },
                { (UInt64?)166, "166" },
                { (UInt64?)167, "167" },
                { (UInt64?)168, "168" },
                { (UInt64?)169, "169" },
                { (UInt64?)170, "170" },
                { (UInt64?)171, "171" },
                { (UInt64?)172, "172" },
                { (UInt64?)173, "173" },
                { (UInt64?)174, "174" },
                { (UInt64?)175, "175" },
                { (UInt64?)176, "176" },
                { (UInt64?)177, "177" },
                { (UInt64?)178, "178" },
                { (UInt64?)179, "179" },
                { (UInt64?)180, "180" },
                { (UInt64?)181, "181" },
                { (UInt64?)182, "182" },
                { (UInt64?)183, "183" },
                { (UInt64?)184, "184" },
                { (UInt64?)185, "185" },
                { (UInt64?)186, "186" },
                { (UInt64?)187, "187" },
                { (UInt64?)188, "188" },
                { (UInt64?)189, "189" },
                { (UInt64?)190, "190" },
                { (UInt64?)191, "191" },
                { (UInt64?)192, "192" },
                { (UInt64?)193, "193" },
                { (UInt64?)194, "194" },
                { (UInt64?)195, "195" },
                { (UInt64?)196, "196" },
                { (UInt64?)197, "197" },
                { (UInt64?)198, "198" },
                { (UInt64?)199, "199" },
                { (UInt64?)200, "200" },
                { (UInt64?)201, "201" },
                { (UInt64?)202, "202" },
                { (UInt64?)203, "203" },
                { (UInt64?)204, "204" },
                { (UInt64?)205, "205" },
                { (UInt64?)206, "206" },
                { (UInt64?)207, "207" },
                { (UInt64?)208, "208" },
                { (UInt64?)209, "209" },
                { (UInt64?)210, "210" },
                { (UInt64?)211, "211" },
                { (UInt64?)212, "212" },
                { (UInt64?)213, "213" },
                { (UInt64?)214, "214" },
                { (UInt64?)215, "215" },
                { (UInt64?)216, "216" },
                { (UInt64?)217, "217" },
                { (UInt64?)218, "218" },
                { (UInt64?)219, "219" },
                { (UInt64?)220, "220" },
                { (UInt64?)221, "221" },
                { (UInt64?)222, "222" },
                { (UInt64?)223, "223" },
                { (UInt64?)224, "224" },
                { (UInt64?)225, "225" },
                { (UInt64?)226, "226" },
                { (UInt64?)227, "227" },
                { (UInt64?)228, "228" },
                { (UInt64?)229, "229" },
                { (UInt64?)230, "230" },
                { (UInt64?)231, "231" },
                { (UInt64?)232, "232" },
                { (UInt64?)233, "233" },
                { (UInt64?)234, "234" },
                { (UInt64?)235, "235" },
                { (UInt64?)236, "236" },
                { (UInt64?)237, "237" },
                { (UInt64?)238, "238" },
                { (UInt64?)239, "239" },
                { (UInt64?)240, "240" },
                { (UInt64?)241, "241" },
                { (UInt64?)242, "242" },
                { (UInt64?)243, "243" },
                { (UInt64?)244, "244" },
                { (UInt64?)245, "245" },
                { (UInt64?)246, "246" },
                { (UInt64?)247, "247" },
                { (UInt64?)248, "248" },
                { (UInt64?)249, "249" },
                { (UInt64?)250, "250" },
                { (UInt64?)251, "251" },
                { (UInt64?)252, "252" },
                { (UInt64?)253, "253" },
                { (UInt64?)254, "254" },
                { (UInt64?)255, "255" },
            });
        }

    }
}
